Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript json处出错:";元素列表后缺少“];或者只是;“未定义”;_Javascript_Json - Fatal编程技术网

Javascript 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",

我有一个类似的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"}}
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”