You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中AsyncStorage.multiGet获取数据无法转JSON格式问题

问题原因

AsyncStorage的multiGet接口返回的是二维数组结构,每个子元素的格式为[存储key, 序列化的JSON字符串],你之前直接对整个返回结果调用JSON.parse,相当于解析数组整体而不是每一项里的JSON字符串,自然会抛出语法错误。

解决方法

1. 修改getOrgsSaved方法,批量解析返回结果

拿到multiGet的返回数组后,遍历每一项,取出第二个元素做JSON.parse即可,代码如下:

const getOrgsSaved = async () => {
    try {
        const keys = await AsyncStorage.getAllKeys();
        const orgPairs = await AsyncStorage.multiGet(keys)
        // 遍历二维数组,解析每一项的JSON字符串
        const parsedOrgs = orgPairs.map(pair => JSON.parse(pair[1]))
        return parsedOrgs
    } catch (e) {
        console.log(e)
        return [];
    }
}

2. 可选:增加容错逻辑避免个别存储项损坏导致全量解析失败

如果担心部分存储的内容不是合法JSON,可以加个try catch包裹单条解析逻辑:

const parsedOrgs = orgPairs.map(pair => {
  try {
    return JSON.parse(pair[1])
  } catch(err) {
    console.log(`解析key为${pair[0]}的存储项失败:`, err)
    return null
  }
}).filter(Boolean) // 过滤掉解析失败的无效项

修改后返回的parsedOrgs就是可直接遍历的对象数组,不需要对业务层其他代码做额外调整。

内容的提问来源于stack exchange,提问作者Matheus Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:51:03