【问题标题】:react native AsyncStorage firebase JSON value '<null>' of type NSNull cannot be converted to NSString无法将 NSNull 类型的本机 AsyncStorage firebase JSON 值“<null>”转换为 NSString
【发布时间】:2016-08-21 00:17:33
【问题描述】:

我正在使用AsyncStorage 来存储一些 Firebase 用户数据。

AsyncStorage.setItem('firebaseUser', JSON.stringify(data))

当我尝试检索数据时,React Native 出现以下错误

AsyncStorage.getItem('firebaseUser')

NSNull 类型的 JSON 值 '' 无法转换为 NSString +[RCTConvert NSString:] + 226 RCTConvert.m:56

Firebase 似乎返回了一些 null 数据(displayNamephotoUrl 等)不确定是否相关。

版本:

"react-native": "^0.31.0",
"firebase": "^3.3.0",

更新: 我实际上将其缩小到 Firebase 模块正在使用 AsyncStorage 来存储自己的数据。发生这种情况时,我会收到 JSON &lt;null&gt; 错误。当我清除AsyncStorage 时,它又可以工作了。 Firebase 数据对象如下所示:

"{
  "uid": "XwsK2",
  "displayName": null,
  "photoURL": null,
  "email": "test@test.com",
  "emailVerified": false,
  "isAnonymous": false,
  "providerData": [
    {
      "uid": "test@test.com",
      "displayName": null,
      "photoURL": null,
      "email": "test@test.com",
      "providerId": "password"
    }
  ],
  "apiKey": "xLxzuyPlUqA88kEfy",
  "appName": "[DEFAULT]",
  "authDomain": "abc.firebaseapp.com",
  "stsTokenManager": {
    "apiKey": "xLxzuyPlUqA88kEfy",
    "refreshToken": "AJiUa4Y7b",
    "accessToken": "eyJhbGciOiJSUzjQzYzU3Nzk5NGVmNGNiy_DlQ8xQO7kq3YXxgntE9Q8YJA",
    "expirationTime": 1472098951672
  },
  "redirectEventId": null
}"

【问题讨论】:

  • AsyncStorage 可以很好地处理对象上的空字段,这不是这里的问题。也许在这里粘贴字符串化的data 对象以便于调试?
  • @jevakallio,我添加了更多细节。感谢您的参与!
  • 我看到的代码没有明显错误,恐怕我帮不上什么忙。祝你好运! :)
  • 看起来正确的方式是:JSON.stringify(data || {})
  • 我也有同样的问题,你得到答案了吗?

标签: firebase react-native firebase-authentication


【解决方案1】:

AsyncStorage 期望您在调用 setItem 时给它一个 string,但您给它的是一个对象。在保存之前尝试对 firebase 数据进行字符串化:

AsyncStorage.setItem('firebaseUser', JSON.stringify(data));

当你读回来时解析它:

AsyncStorage.getItem('firebaseUser').then(data => data ? JSON.parse(data) : null);

【讨论】:

  • 我实际上是在对它进行字符串化。不然根本救不了。我修改了问题以反映这一点。
猜你喜欢
  • 2019-05-02
  • 2021-01-14
  • 2017-04-10
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 2016-11-17
  • 2016-07-15
  • 1970-01-01
相关资源
最近更新 更多