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

问题描述:

我正在尝试使用wiki引用api来显示来自着名人物(例如Bob Dylan)的引号的应用程序。如何访问React Native中的json对象字符串

请求的URL看起来是这样的:

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

我有阵营原住民要求有工作:

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

    }) 

}); 
} 

当我尝试显示报价,但是,它的形式一个对象并在视图中获取[object object]。在控制台中我收到:

可能未处理无极抑制(ID:0): 对象是不是一个做出反应的孩子有效(发现:对象,具有键{})。如果您打算渲染一组儿童,请改用数组,或者使用React附加组件中的createFragment(object)来包装对象。检查Text的渲染方法。 不可违反:对象作为React子项无效(找到:带有键的对象{})。如果您打算渲染一组儿童,请改用数组,或者使用React附加组件中的createFragment(object)来包装对象。检查Text的渲染方法。

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

+1

'response.parse.text ['*']'..'*'是一个特殊字符 – azium

你必须明确地把responseObject,通过调用其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

您可以使用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))