Javascript多维JSON访问数据

时间:2017-12-31 13:55:09

标签: javascript json ajax

我从api那里得到json数据:



{
    "function": "getCategoryItem",
    "version": "0.1",
    "returnCode": true,
    "errorCode": 0,
    "errorMessage": "",
    "result": {
        "_ITEM_": [
            {
                "itemId": 10000,
                "itemName": "Item Test\u00fc\u00e7\u011e\u00d6",
                "itemImageURL": "test.png",
                "itemDescription": "21testDESC",
                "itemPrice": 762
            },
            {
                "itemId": 10001,
                "itemName": "Item Test V2",
                "itemImageURL": "tiger.png",
                "itemDescription": "asfdjKDEWSC",
                "itemPrice": 552
            },
                        ],
        "_NAVIGATION_": [
            {
                "itemCount": 21,
                "totalCount": 21,
                "currentPage": 1,
                "navigationSize": 10,
                "pageSize": 10
            }
        ]
    }
}




但我无法访问 ITEM - > itemId或 NAVIGATION - > currentPage如何使用JavaScript访问 ITEM NAVIGATION 内部?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

首先,问题中的JSON(如果它真的意味着 JSON ,而不仅仅是对象文字)是无效的:它在_ITEM_中的第一个条目之后有一个尾随逗号,这在JavaScript中有效,但在JSON中无效。

一旦修复,并假设在某个阶段你解析 JSON,那时它不再是JSON,它是一个具有属性的对象(引用其他对象等)。在您的情况下,如果data引用整个解析结果,则您可以像这样访问_ITEM_

console.log(data.result._ITEM_[0].itemId); // 10000

实例:

var json =
    '{\n'+
    '    "function": "getCategoryItem",\n' +
    '    "version": "0.1",\n' +
    '    "returnCode": true,\n' +
    '    "errorCode": 0,\n' +
    '    "errorMessage": "",\n' +
    '    "result": {\n' +
    '        "_ITEM_": [\n' +
    '            {\n' +
    '                "itemId": 10000,\n' +
    '                "itemName": "Item Test\u00fc\u00e7\u011e\u00d6",\n' +
    '                "itemImageURL": "test.png",\n' +
    '                "itemDescription": "21testDESC",\n' +
    '                "itemPrice": 762\n' +
    '            },\n' +
    '            {\n' +
    '                "itemId": 10001,\n' +
    '                "itemName": "Item Test V2",\n' +
    '                "itemImageURL": "tiger.png",\n' +
    '                "itemDescription": "asfdjKDEWSC",\n' +
    '                "itemPrice": 552\n' +
    '            }\n' +
    //            ^-- This is where the invalid comma was
    '                        ],\n' +
    '        "_NAVIGATION_": [\n' +
    '            {\n' +
    '                "itemCount": 21,\n' +
    '                "totalCount": 21,\n' +
    '                "currentPage": 1,\n' +
    '                "navigationSize": 10,\n' +
    '                "pageSize": 10\n' +
    '            }\n' +
    '        ]\n' +
    '    }\n' +
    '}';
var data = JSON.parse(json);
console.log(data.result._ITEM_[0].itemId); // 10000