Javascript json处出错:";元素列表后缺少“];或者只是;“未定义”;
我有一个类似的json:Javascript json处出错:";元素列表后缺少“];或者只是;“未定义”;,javascript,json,Javascript,Json,我有一个类似的json: {"156644":{ "name":"name1", "street":"street1", "city":"city1" "68656":{ "name":"name2 ", "street":"street2", "city":"city1" "388655":{ "name":"name3", "street":"street3",
{"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"}}
var object = eval(' (' + obj_json + ') '); alert(object.length);
现在我想解码这个json。我在Javascript中写道:
var object = eval(obj_json);
if(typeof(object)!="undefined"){
//fuel
for (var ii=0; ii<object.length; ii++){
alert(ii)
}
}
但这根本不起作用。
现在我得到了一个“元素列表后缺少]的”错误
你能帮我吗?PLZ 每个元素后缺少右括号:
{"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"},
// ...
每个元素后缺少右括号:
{"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"},
// ...
你到处都找不到结束语
}
的东西。你不是这个意思吗:
{"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"}}
你到处都找不到结束语
}
的东西。你不是这个意思吗:
{"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"}}
针对这个问题提出任何建议,因为OP的两个帖子内容不同。但是仍然推荐。针对这个问题提出任何建议,因为OP的两篇帖子内容不同。但是仍然推荐。如果这是您的JSON的确切转储,那么您的问题在于您的var名称 您的JSON提供程序需要更改其输出,或者您需要在尝试解码之前对其进行解析,以便在其中获得正确的var名称:
json=eval(obj_json.replace(/([,\n\r\t])([0-9]*):/g,$1“v_$2:”)代码>
(没有经过严格测试,只是一个在示例代码上工作的示例)如果这是JSON的精确转储,那么您的问题在于var名称
您的JSON提供程序需要更改其输出,或者您需要在尝试解码之前对其进行解析,以便在其中获得正确的var名称:
json=eval(obj_json.replace(/([,\n\r\t])([0-9]*):/g,$1“v_$2:”)代码>
(没有经过严格测试,只是一个在示例代码上工作的示例)顺便说一句:我通过编码解决了这个问题:
eval("var jsonobject=" + obj_json);
现在它工作了!现在我可以写:
for(ii in jsonobject){
var intii = parseInt(ii);
if (!isNaN(intii)){
var street = jsonobject[ii].street;
alert(street)
}
}
顺便说一句:我通过编码解决了这个问题:
eval("var jsonobject=" + obj_json);
现在它工作了!现在我可以写:
for(ii in jsonobject){
var intii = parseInt(ii);
if (!isNaN(intii)){
var street = jsonobject[ii].street;
alert(street)
}
}
是我,还是你遗漏了右大括号和逗号?那么,我猜不只是我…是我,还是你遗漏了右大括号和逗号?那么,我猜不只是我…OP尝试了你的第二个eval
示例(见问题的底部)。谢谢,没有注意到这一点。但是我注意到了真正的问题。OP使用字符串作为键。它们正好包含数值:)@kdgregory:啊,对了。尽管如此,JavaScript还是将键转换为字符串。例如({12345:'foo'})[“12345”]
仍然会产生输出“foo”
。OP尝试了您的第二个eval
示例(参见问题的底部)。谢谢,没有注意到这一点。但是我注意到了真正的问题。OP使用字符串作为键。它们正好包含数值:)@kdgregory:啊,对了。尽管如此,JavaScript还是将键转换为字符串。例如({12345:'foo'})[“12345”]
仍然会导致输出“foo”
。