2016-06-30 34 views
3

我正在嘗試使用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

回答

2

你必須明確地把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

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))