我正在使用WebView onmessage
从WebView获取React Native的传递数据。我正在通过的数据是JSON,我将其作为纯文本传递(这样我就可以解析React Native的纯数据)。当我尝试使用.json()
解析JSON时,我会得到此错误:
undefined is not a function (evaluating x.json())
我不知道如何或何处实现JSON()函数,因此我不会遇到此错误。我正在使用以下代码。
onMessage( event ) {
Alert.alert(
'On Message',
event.nativeEvent.data.json(),
[
{text: 'OK'},
],
{ cancelable: true }
)
}
和
<WebView
ref={( webView ) => this.webView = webView}
onMessage={this.onMessage}
source={{uri: 'https://app.sodge.co/login/twitter?redirect=../response.html'}}
/>
该函数在不使用.json()的情况下正确执行(但是我所能理解的就是纯文本,因为它没有解析)
在JavaScript字符串中没有json
方法。改用JSON.parse
。另一个选项是在字符串上添加json
方法;
String.prototype.json = function () {
return JSON.parse(this);
};
编辑:
对于反应,您应该这样的原型,并将其导入应用程序的根源:
Object.defineProperty(String.prototype, 'json', {
value: function() { return JSON.parse(this); },
enumerable: false
});
字符串没有 .json()
方法(例如 fetch
响应体)。您将要使用
JSON.parse(event.nativeEvent.data)
来自docs
window.postmessage接受一个参数,数据,该参数将在事件对象,event.nativeevent.data上可用。数据必须是字符串。
相反,您需要将JSON解析为
JSON.parse(event.nativeData.data)
看来,反应本机doc明确指出 event.nativeEvent.data
必须是字符串:
window.postmessage接受一个参数,数据,该参数将在事件对象,event.nativeevent.data上可用。数据必须是字符串。
由于数据是字符串,请使用JSON.parse
将其转换为有效的JSON
对象。