Axios响应返回对象而不是数组

时间:2019-12-19 06:00:25

标签: react-native axios

我在React Native中使用axios。邮递员中的原始回复如下:

{
    "id": 2,
    "parent_id": 1,
    "name": "Default Category",
    "is_active": true,
    "position": 1,
    "level": 1,
    "product_count": 2,
    "children_data": [
        {
            "id": 3,
            "parent_id": 2,
            "name": "Papers",
            "is_active": true,
            "position": 1,
            "level": 2,
            "product_count": 2,
            "children_data": [
                {
                    "id": 5,
                    "parent_id": 3,
                    "name": "A44",
                    "is_active": true,
                    "position": 1,
                    "level": 3,
                    "product_count": 0,
                    "children_data": []
                }
            ]
        },
        {
            "id": 6,
            "parent_id": 2,
            "name": "Laptop",
            "is_active": true,
            "position": 2,
            "level": 2,
            "product_count": 1,
            "children_data": []
        }
    ]
}

当我尝试这个console.log(typeof categoryResponse.data.children_data);时如何 我得到对象。这引起了问题,因为我正在尝试更新类型为array的react-native中的状态变量。甚至是在打印console.log(categoryResponse.data);时看起来很奇怪的响应对象。

  

对象{“ children_data”:数组[       对象{         “ children_data”:数组[           对象{             “ children_data”:数组[],             “ id”:5             “ is_active”:是,             “级别”:3,             “名称”:“ A44”,             “ parent_id”:3,             “位置”:1             “ product_count”:0,           },         ],         “ id”:3,         “ is_active”:是,         “级别”:2         “ name”:“ Paper”,         “ parent_id”:2         “位置”:1         “ product_count”:2       },       对象{         “ children_data”:数组[],         “ id”:6         “ is_active”:是,         “级别”:2         “ name”:“笔记本电脑”,         “ parent_id”:2         “位置”:2         “ product_count”:1       },],“ id”:2,“ is_active”:true,“ level”:1,“ name”:“默认类别”,“ parent_id”:1,“ position”:1,
  “ product_count”:2,}

请帮助

1 个答案:

答案 0 :(得分:1)

在javascript中,typeof数组实际上是一个对象。在javascript中,只有6种数据类型。数组是对象的子集,因此console.log(typeof categoryResponse.data.children_data)即使对象是数组也返回对象。

但是您可以看到console.log(categoryResponse.data)时看到的

Object { "children_data": Array [ Object { "children_data": Array [ Object { "children_data": Array [], "id": 5, "is_active": true, "level": 3, "name": "A44", "parent_id": 3, "position": 1, "product_count": 0, }, ], "id": 3, "is_active": true, "level": 2, "name": "Papers", "parent_id": 2, "position": 1, "product_count": 2, }, Object { "children_data": Array [], "id": 6, "is_active": true, "level": 2, "name": "Laptop", "parent_id": 2, "position": 2, "product_count": 1, }, ], "id": 2, "is_active": true, "level": 1, "name": "Default Category", "parent_id": 1, "position": 1,
"product_count": 2, }

,在这里您可以看到“ childern_data”是一个数组。

"children_data": Array [ Object {

所以基本上它是一个数组,不要让typeof混淆您。

希望有帮助。毫无疑问,不清楚吧