Best way to JSON parsing using JavaScript
Possible Duplicate:
Length of a JavaScript object (that is, associative array)
我有以下格式的JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [{"student":{"name" :"ABCD", "age":8, } "user":{"firstName":"ABCD", "age": 9, } }, {"student":{"name" :"XCYS", "age":10, } "user":{"firstName":"GGG", "age": 11, } },] |
我试过用
我基本上对如何获取JSON中一个对象的长度以及如何有效地显示它感到非常困惑。我该怎么做?
您问题中的内容没有像所有键都需要用引号括起来那样有效地解析JSON(因此您应该使用
只要您有有效的JSON,就应该能够在所有比IE7更新的浏览器中使用
1 2 3 4 5 | 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/douglas crockford/json-js
假设您拥有的实际对象是有效的(没有缺少逗号等),并且您已经正确地解析了字符串,您正在尝试使用数组索引访问对象,反之亦然。让我们从头开始重建对象:
首先,您有一个数组。
1 | [] |
您可以使用
1 2 3 | [ {} ] |
对象有两个键,两个键都保存对象。
1 2 3 4 5 6 | [ { "student": {}, "user": {} } ] |
您可以使用
1 2 3 4 5 6 7 8 9 | [ { "student": { "name":"ABCD", "age": 8 }, "user": {} } ] |
您可以通过以下方式获得该对象中的值数:
1 | Object.keys( data[0].student ).length; |
要获得更好的浏览器支持,请参见javascript对象的长度
请在某些网站中验证您的JSON字符串http://jsonformatter.curiousconcept.com/
因为javascript是一种脚本语言,所以当它出现语法错误时,它将解释脚本并终止解释。尝试在浏览器中使用一些javascript控制台
IE - Developer Tools
Firefox - firebug plugin
我知道如何解析它,看起来很简单
我用了
这似乎提醒了正确的值
感谢大家的回答!!
首先,JSON的结构不正确-一些元素名称缺少引号、逗号位置错误、缺少等。请将您的名称与以下内容进行比较:
1 2 3 | var json = [{"student":{"name" :"ABCD","age":8},"user":{"firstName":"ABCD","age": 9}}, {"student":{"name" :"XCYS","age":10},"user":{"firstName":"GGG","age": 11}} ]; |
与垂直展开相比,JSON更容易验证读取方式。然后,通过一个简单的循环:
1 2 3 4 | for(var ix in json) { alert(json[ix].student.name +"="+json[ix].student.age); } |
希望你能看到如何从那里开始。