我正在尝试解析下面代码中返回的 JSON,更具体地说,我正在尝试将 res.name 添加到组件状态。
您可以看到我已经达到了this.setState({results:res}),这将整个响应对象添加到组件状态,但我很难“深入”到名称值。我尝试使用 console.log(res.results) 但它返回为未定义,有人可以伸出援手来阐明这个问题..
constructor() {
super();
this.state = {
results: []
}
}
apiRequest() {
request('http://localhost:3000/api', function (error, response, body) {
if (!error && response.statusCode == 200) {
var res = JSON.parse(JSON.stringify(response.body))
console.log(res.results) // Should this not work?
this.setState({results:res})
}
}.bind(this))
}
返回'res'Json
{
"count":87,
"next":"http://swapi.co/api/people/?page=2",
"previous":null,
"results":[
{"name":"Luke Skywalker"},
{"name":"Han Solo"}
]
}
最佳答案
您的响应应该已经是一个 JSON 对象。所以,打电话
JSON.parse(JSON.stringify(response))
将带您回到第一个方 block 。您正在序列化和反序列化同一个对象。
你应该能够做到:
console.log(JSON.stringify(response));
这会将整个对象输出到您的控制台,以便您可以看到所有内容。
然后你可以通过调用直接将对象存储在状态中:
this.setState({results:response.body})
关于javascript - 将 Json 解析为状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37139782/