使用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 polyfill: https : //github.com/douglascrockford/JSON-js
请在某些网站validation您的json字符串http://jsonformatter.curiousconcept.com/
由于javascript是一种脚本语言,它将解释脚本并在语法出现错误时终止解释。 尝试在浏览器中使用一些javascript控制台
IE – 开发人员工具
Firefox – firebug插件
让我们假设您拥有的实际对象是有效的(没有丢失逗号等),并且您已正确解析字符串,您正在尝试访问具有数组索引的对象,反之亦然。 让我们从头开始重建对象:
首先,你有一个数组。
[]
您可以使用data[0]
访问数组中的第一个元素。 第一个元素是一个对象。
[ {} ]
该对象有两个键,它们都保存对象。
[ { "student": {}, "user": {} } ]
您可以使用data[0].student
访问student
密钥。 它包含两个键的对象。
[ { "student": { "name": "ABCD", "age": 8 }, "user": {} } ]
您将获得该对象中的值的数量:
Object.keys( data[0].student ).length;
要获得更好的浏览器支持,请参阅JavaScript对象的长度
首先,json的结构不正确 – 一些元素名称缺少引号,commsa在错误的位置,缺少等等。将你的比较:
var json = [{"student":{"name" : "ABCD","age":8}, "user":{ "firstName":"ABCD", "age": 9}}, {"student":{"name" : "XCYS","age":10}, "user":{ "firstName":"GGG", "age": 11}} ];
json比垂直展开更容易certificate读取方式。 然后,用一个简单的循环:
for(var ix in json) { alert(json[ix].student.name +"="+json[ix].student.age); }
希望你能看到如何去那里。
我想出了如何解析它,看起来很简单
我使用data[i].student.name
和data[i].user.name
这似乎提醒了正确的价值
谢谢大家的回复!!