如何在React Native中访问json对象的字符串

时间:2016-06-30 20:05:54

标签: javascript json reactjs react-native

我正在尝试使用wiki引用api创建一个显示来自名人(例如Bob Dylan)的引用的应用。

请求网址如下所示:

https://en.wikiquote.org/w/api.php?format=json&action=parse&page=Bob_Dylan&prop=text

我有使用React Native请求:

componentWillMount() {
Api().then((response) => {
  this.setState({
    quote:response.parse.text

  })

});
}

但是,当我尝试显示引号时,它以对象的形式出现并在视图中获取[object object]。在我收到的控制台中:

  

可能未处理的承诺拒绝(id:0):   对象作为React子对象无效(找到:具有键{}的对象)。如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象。检查Text的呈现方法。   不变违规:对象无效作为React子对象(找到:具有键{}的对象)。如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象。检查Text的呈现方法。

当我尝试response.parse.text.*时,我收到了令牌错误。有任何建议如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您必须通过调用response方法明确将Object变为json(),例如:

 var url = 'https://en.wikiquote.org/w/api.php?format=json&action=parse&page=Bob_Dylan&prop=text';

 fetch(url)
   .then((response) => response.json())
   .catch((error) => console.warn("fetch error:", error))
   .then((response) => console.log(response.parse))

工作示例:https://rnplay.org/apps/EqyMdA

答案 1 :(得分:0)

您可以使用response.text()而不是response.json()

var url = 'https://en.wikiquote.org/w/api.php?
 fetch(url)
   .then((response) => response.text())
   .catch((error) => console.warn("fetch error:", error))
   .then((response) => console.log(response.parse))