我有一个json喜欢:
{"156644":{ "name":"name1",
"street":"street1",
"city":"city1"
"68656":{ "name":"name2 ",
"street":"street2",
"city":"city1"
"388655":{ "name":"name3",
"street":"street3",
"city":"city1"
"4564":{ "name":"name4",
"street":"street4",
"city":"city1"
"6333":{ "name":"name5",
"street":"street5",
"city":"city1"}}
现在我要解码这个json。在我的Javascript中,我写道:
var object = eval(obj_json);
if(typeof(object)!="undefined"){
//fuel
for (var ii=0; ii<object.length; ii++){
alert(ii)
}
}
现在我在object.length上遇到一个未定义的错误。所以我试着解析我的json:
var object = eval(' (' + obj_json + ') '); alert(object.length);
但这根本不起作用。 现在我在元素列表后面出现“缺失”错误。
你帮我吗? PLZ!答案 0 :(得分:3)
您在每个元素后缺少右括号:
{"156644":{ "name":"name1",
"street":"street1",
"city":"city1" // Bracket needs to be here!
"68656":{ "name":"name2 ",
"street":"street2",
"city":"city1" // Bracket needs to be here!
// ...
相反,它应该看起来像:
{"156644":{ "name":"name1",
"street":"street1",
"city":"city1"},
"68656":{ "name":"name2 ",
"street":"street2",
"city":"city1"},
// ...
答案 1 :(得分:1)
你错过了所有地方关闭}
件事。你的意思不是这个:
{"156644":{ "name":"name1",
"street":"street1",
"city":"city1" }, // THIS, RIGHT HERE
"68656":{ "name":"name2 ",
"street":"street2",
"city":"city1" }, // AND THIS
"388655":{ "name":"name3",
"street":"street3",
"city":"city1" }, // AND THIS
"4564":{ "name":"name4",
"street":"street4",
"city":"city1" }, // AND THIS
"6333":{ "name":"name5",
"street":"street5",
"city":"city1"}}
答案 2 :(得分:0)
取出有关问题的任何建议,因为OP的两个帖子有不同的内容。但仍然建议JSONLint。
答案 3 :(得分:0)
如果这是您的JSON的精确转储,那么您的问题在于您的var名称;
您的JSON提供程序需要更改其输出,或者您需要在尝试解码之前对其进行解析,以在其中获取正确的var名称:
json=eval( obj_json.replace( /([, \n\r\t])([0-9]*):/g, '$1"v_$2":' ) );
(未经过严格测试,只是一个适用于示例代码的示例)
答案 4 :(得分:0)
顺便说一句:我通过编码解决了这个问题:
eval("var jsonobject=" + obj_json);
现在它有效!现在我可以写:
for(ii in jsonobject){
var intii = parseInt(ii);
if (!isNaN(intii)){
var street = jsonobject[ii].street;
alert(street)
}
}