JSON.Parse,'未捕获的SyntaxError:意外的令牌o

这个问题在这里已经有了答案:

  • 我不断收到“Uncaught SyntaxError:Unexpected token o”7个答案

  • 如果没有单引号,你正在创建一个包含两个对象的数组。 这是JavaScript自己的语法。 当您添加引号时,该对象(数组+ 2对象)现在是一个字符串。 您可以使用JSON.parse将字符串转换为JavaScript对象。 您无法使用JSON.parse将JavaScript对象转换为JavaScript对象。

    //String - you can use JSON.parse on it
    var jsonStringNoQuotes = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
    
    //Already a javascript object - you cannot use JSON.parse on it
    var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
    

    此外,最后一个示例失败,因为您正在向JSON字符串添加文字单引号字符。 这是非法的。 JSON规范规定只允许双引号。 如果您要console.log以下...

    console.log("'"+[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]+"'");
    //Logs:
    '[object Object],[object Object]'
    

    您会看到它返回数组的字符串表示形式,该数组将被转换为以逗号分隔的列表,并且每个列表项都是对象的字符串表示形式,即[object Object] 。 请记住,JavaScript中的关联数组只是对象,每个键/值对都是属性/值。

    为什么会发生? 因为你是以一个字符串"'"开头的,所以你试图将数组追加到数组中,该数组请求字符串的表示形式,然后附加另一个字符串"'"

    请不要混淆JSON和Javascript,因为它们是完全不同的东西。 JSON是一种人类可读的数据格式,旨在匹配创建javascript对象时使用的语法。 JSON是一个字符串。 Javascript对象不是,因此在代码中声明时不用引号括起来。

    看到这个小提琴:http://jsfiddle.net/NrnK5/


    var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
    

    它会创建json对象。 无需解析。

    jsonStringQuotes = "'" + jsonStringNoQuotes + "'";
    

    将返回'[object]'

    这就是为什么它(下面)导致错误

    var myData = JSON.parse(jsonStringQuotes);
    

    你的最后一个例子是无效的JSON。 JSON中不允许使用单引号,除了字符串内部。 在第二个示例中,单引号不在字符串中,但用于显示开始和结束。

    有关规格,请参阅http://www.json.org/。

    应该补充一点:你为什么这么认为:“就像我真的需要在我的真实代码中一样”? 那么也许我们可以帮助您想出解决方案。

    链接地址: http://www.djcxy.com/p/8023.html

    上一篇: JSON.Parse,'Uncaught SyntaxError: Unexpected token o

    下一篇: Uncaught SyntaxError: Unexpected token ILLEGAL