如果没有单引号,那么您正在创建一个数组,其中包含两个对象。这是Javascript自己的语法。当您添加引号时,该对象(数组+
2个对象)现在是字符串。您可以
JSON.parse用来将字符串转换为Javascript对象。您不能用于
JSON.parse将Javascript对象转换为Javascript对象。
//String - you can use JSON.parse on itvar jsonStringNoQuotes = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';//Already a javascript object - you cannot use JSON.parse on itvar 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]'
您会看到它返回数组的字符串表示形式,该字符串表示形式转换为逗号分隔的列表,并且每个列表项都是对象的字符串表示形式,即
[objectObject]。请记住,Javascript中的关联数组只是对象,每个键/值对都是一个属性/值。
为什么会这样?因为您是从字符串开始的
"'",所以您尝试将数组追加到它的后面,该数组请求它的字符串表示形式,然后再追加另一个string
"'"。
请不要将JSON与Javascript混淆,因为它们是完全不同的东西。JSON是一种人类可读的数据格式,旨在与创建javascript对象时使用的语法匹配。JSON是一个字符串。Javascript对象不是,因此在代码中声明时不会用引号引起来。
看到这个小提琴:http :
//jsfiddle.net/NrnK5/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)