使用JavaScript进行JSON解析的最佳方法

可能的重复: JavaScript对象的长度(即关联数组)

我有以下格式的JSON

[{"student":{"name" : "ABCD",
        "age":8,
        }
    "user":{ "firstName":"ABCD",
            "age": 9,
        }
        },
   {"student":{"name" : "XCYS",
        "age":10,
        }
    "user":{ "firstName":"GGG",
            "age": 11,
        }
},]

我尝试使用(data.student[i].length) ,这不起作用(只是看看对象的长度),我也尝试过(data.user[i])无济于事。

我基本上很困惑我如何获得JSON中的一个对象的长度以及如何有效地显示它。 我怎样才能做到这一点?


您的问题中的内容不会被解析为有效的JSON,因为所有密钥都需要用引号包裹(所以您应该有"age": 11而不是age: 11 )。 对象中的所有键/值对应以逗号分隔(所以您应该有"firstName": "GGG", "age": 11而不是"firstName": "GGG" "age": 11 。外部数组中的尾随逗号。

只要你有有效的JSON,你应该能够在比IE7更新的浏览器中使用JSON.parse(data)来将字符串转换为实际的对象。 一旦解析成一个对象,你可以使用:

var data = "your JSON string";
var object = JSON.parse(data);

console.log(object.length); // the number of objects in the array
console.log(object[0].student.name; // the name of the first student

如果您支持IE7及更高版本的浏览器,请查看Douglas Crockford的JSON填充:https://github.com/douglascrockford/JSON-js


请在一些网站中验证您的json字符串http://jsonformatter.curiousconcept.com/

由于JavaScript是一种脚本语言,因此它会解释脚本并在它出现语法错误时终止解释。 尝试在浏览器中使用一些JavaScript控制台

IE - 开发者工具

Firefox - 萤火虫插件


假设你拥有的实际对象是有效的(不会丢失逗号等),并且你正确地解析了字符串,你试图访问带有数组索引的对象,反之亦然。 让我们从头开始重建对象:

首先,你有一个数组。

[]

您可以使用data[0]访问数组中的第一个元素。 第一个元素是一个对象。

[
    {}
]

该对象有两个键,它们都保存对象。

[
    {
        "student": {},
        "user": {}
    }
]

您使用data[0].student访问student密钥。 它包含并带有两个键的对象。

[
    {
        "student": {
            "name": "ABCD",
            "age": 8
        },
        "user": {}
    }
]

您可以通过以下方式获取该对象中的值的数量:

Object.keys( data[0].student ).length;

要获得更好的浏览器支持,请参阅JavaScript对象的长度

链接地址: http://www.djcxy.com/p/27263.html

上一篇: Best way to JSON parsing using JavaScript

下一篇: How to find the length of a JSON object