javascript - 将 Json 解析为状态

标签 javascript json reactjs

我正在尝试解析下面代码中返回的 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/

相关文章:

javascript - 如何在javascript中定位外部div

jquery - 如何编写嵌套多维json对象

javascript - React-Native - 如何为 TouchableOpacity 组件创建禁用样式?

javascript - 在第二个提取请求中使用提取响应

javascript - 如何让事件不在父元素中触发

javascript - 限制reactjs中的字符数

javascript - 为什么我的亚马逊插槽返回未定义?

javascript - 访问加载时 ajax 请求返回的数据

c++ - 如何在 C++ 中设置 json 库? (微软 Visual Studio )

reactjs - 如何测试子组件是否已呈现?