异步存储以字符串形式从存储中返回项目.接下来,将该字符串解析为一个对象.try 从对象获取数据时,返回未定义的错误.

const storage: any = await AsyncStorage.getItem('persist:root');

const state = JSON.parse(storage!);
console.log(state);

const a = JSON.parse(JSON.stringify(state.auth));
console.log(a); <- Normal JSON with fields "user" and "token'
console.log(a.user); <- undefined
console.log(a.token); <- undefined

const refreshToken = a.token.refreshToken; <- undefined

变量state.auth JSON如下所示:

{
  "user":{
},
  "token":{
    "refreshToken":"REFRESH",
    "accessToken":"ACCESS"
  }
}

LOG {"_persist": "{"version":-1,"rehydrated":true}", "auth": "{"user":{"user_id":19,"email":"user19@mail.ru","approved":false,"createdAt":"2024-01-11T07:42:33.762Z","updatedAt":"2024-01-11T07:42:33.762Z","role":{"role_id":1,"role_name":"Пользователь","createdAt":"2024-01-10T12:42:21.257Z","updatedAt":"2024-01-10T12:42:21.257Z"},"organization":{"organization_id":3,"organization_type_id":1,"organization_name":"ООО \"Компания 4\"","full_name":"ООО \"Компания 4\"","short_name":"Компания 4","register_number":"212122134","bic":"251490211","phone":"+79354944154","address":"883072, Курганская область, город Чехов, спуск Будапештсткая, 77","email":"company4@mail.com","ogrn":"6927890723831","inn":"0436981520","kpp":"183212273","okpo":"50235599","createdAt":"2024-01-10T12:42:23.354Z","updatedAt":"2024-01-10T12:42:23.354Z"},"person":{"person_id":19,"last_name":"Ivanov","first_name":"Ivan","patronymic":"Ivanovi3","gender":"Мужской","phone":"+79001234568","createdAt":"2024-01-11T07:42:33.760Z","updatedAt":"2024-01-11T07:42:33.760Z"},"group":null},"token":{"refreshToken":"REFRESH","accessToken":"ACCESS"}}"} LOG {"user":{"user_id":19,"email":"user19@mail.ru","approved":false,"createdAt":"2024-01-11T07:42:33.762Z","updatedAt":"2024-01-11T07:42:33.762Z","role":{"role_id":1,"role_name":"Пользователь","createdAt":"2024-01-10T12:42:21.257Z","updatedAt":"2024-01-10T12:42:21.257Z"},"organization":{"organization_id":3,"organization_type_id":1,"organization_name":"ООО "Компания 4"","full_name":"ООО "Компания 4"","short_name":"Компания 4","register_number":"212122134","bic":"251490211","phone":"+79354944154","address":"883072, Курганская область, город Чехов, спуск Будапештсткая, 77","email":"company4@mail.com","ogrn":"6927890723831","inn":"0436981520","kpp":"183212273","okpo":"50235599","createdAt":"2024-01-10T12:42:23.354Z","updatedAt":"2024-01-10T12:42:23.354Z"},"person":{"person_id":19,"last_name":"Ivanov","first_name":"Ivan","patronymic":"Ivanovi3","gender":"Мужской","phone":"+79001234568","createdAt":"2024-01-11T07:42:33.760Z","updatedAt":"2024-01-11T07:42:33.760Z"},"group":null},"token":{"refreshToken":"REFRESH","accessToken":"ACCESS"}} LOG undefined LOG undefined

推荐答案

state是解析后的storage JSON字符串.它是一个有"_persist""auth""token"个键的对象.从这里开始,state.authstate.token保存经过字符串化的JSON数据,因此需要对这些数据进行解析.107.这样做将产生相同的原始单字符号化的值.只要分析它们就行了.

const storage: any = await AsyncStorage.getItem('persist:root');

const state = JSON.parse(storage!);
console.log(state);

const a = JSON.parse(state.auth);
console.log(a); <- Normal JSON with fields "user" and "token'
console.log(a.user); <-- defined
console.log(a.token); <-- defined

const refreshToken = a.token.refreshToken; <-- "REFRESH"
{
    "user": {
        "user_id": 19,
        "email": "user19@mail.ru",
        "approved": false,
        "createdAt": "2024-01-11T07:42:33.762Z",
        "updatedAt": "2024-01-11T07:42:33.762Z",
        "role": {
            "role_id": 1,
            "role_name": "Пользователь",
            "createdAt": "2024-01-10T12:42:21.257Z",
            "updatedAt": "2024-01-10T12:42:21.257Z"
        },
        "organization": {
            "organization_id": 3,
            "organization_type_id": 1,
            "organization_name": "ООО \"Компания 4\"",
            "full_name": "ООО \"Компания 4\"",
            "short_name": "Компания 4",
            "register_number": "212122134",
            "bic": "251490211",
            "phone": "+79354944154",
            "address": "883072, Курганская область, город Чехов, спуск Будапештсткая, 77",
            "email": "company4@mail.com",
            "ogrn": "6927890723831",
            "inn": "0436981520",
            "kpp": "183212273",
            "okpo": "50235599",
            "createdAt": "2024-01-10T12:42:23.354Z",
            "updatedAt": "2024-01-10T12:42:23.354Z"
        },
        "person": {
            "person_id": 19,
            "last_name": "Ivanov",
            "first_name": "Ivan",
            "patronymic": "Ivanovi3",
            "gender": "Мужской",
            "phone": "+79001234568",
            "createdAt": "2024-01-11T07:42:33.760Z",
            "updatedAt": "2024-01-11T07:42:33.760Z"
        },
        "group": null
    },
    "token": {
        "refreshToken": "REFRESH",
        "accessToken": "ACCESS"
    }
}

Json相关问答推荐

Azure Data Factory JSON输出格式问题

如何在我的响应模型中修复此问题:[期望的值类型为';Map<;Dynamic,Dynamic&>;,但获得的值类型为';NULL&39;]

使用JQ从jsonl文件中删除具有匹配键/值的行

来自json的可分析的构建报告

VBA json按特定属性名称提取所有数据

使用 Powershell,如何将 Azure AD 组成员转换为 Json 对象(文件),然后可以更新?

使用 jq 如何更改键的值?

如何使用 serde_json 构建有状态的流式解析器?

ETCD 导出为 json 并从 base64 解码所有键/值到人类可读

JSONPath:查找子项目条件在字符串列表中的项目

Golang 解组行为:字段过多?

使用杰克逊解析Kotlin 中的通用密封类

使用 KQL 和外部 data() 运算符从 json 文件中提取信息

如何为包含一些固定值并可能具有其他附加值的数组字符串创建数组 json 架构

JSON.NET 中特定对象的自定义转换

在 Webpack 中加载静态 JSON 文件

如何使用 Gson 解码具有未知字段的 JSON?

XML vs YAML vs JSON

使用 JSONArray 和 JSONObject 进行 Foreach

从 Ruby 中的 JSON 文件解析并从嵌套哈希中提取数字