Get json from jsonp fetch promise
我只是从 react-native 开始,我正在做文档中的经典示例作为基础......
1 2 3 4 5 6 7 8 | fetch('https://facebook.github.io/react-native/movies.json') .then((response) => response.json()) .then((responseJson) => { return responseJson.movies; }) .catch((error) => { console.error(error); }); |
在该示例中,如果使用正确的 json,这一切都可以正常工作。
但是,在我的特定情况下,唯一可用的 api 响应是 JSONP 而不是 JSON。没有基本的 JSON 可用。所以我收到一个关于"("的错误。
所以不是像JSON那样
1 | {"id":"1","movies" : [ {"id" :"123" } ] } |
我收到 JSONP 之类的
1 | ?( {"id":"1","movies" : [ {"id" :"123" } ] }); |
但是,我不确定我可以做些什么来通过 fetch Promise 将 JSON 从中取出?如何使用我自己的函数之一来操作响应,或者有更自然的方法吗?
所以在第一个 then() 中我不确定我能做些什么来取出 json(我尝试过对响应进行操作,但这似乎只是看Promise,所以我不确定如何反应-native fetch 正在使用此操作)。
我建议使用
1 2 3 4 5 6 7 8 9 10 | fetch('YOUR URL HERE') .then((response) => response.text()) .then((responseText) => { const match = responseText.match(/\\?\\((.*)\\);/); if (!match) throw new Error('invalid JSONP response'); return JSON.parse(match[1]).movies; }) .catch((error) => { console.error(error); }); |