JSON.Parse,'未捕获的SyntaxError:意外的令牌o
这个问题在这里已经有了答案:
如果没有单引号,你正在创建一个包含两个对象的数组。 这是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