未定义不是函数(评估x.json())



我正在使用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对象。

相关内容

  • 没有找到相关文章

最新更新