繁体   English   中英

JSON.stringify()和JavaScript对象

[英]JSON.stringify() and JavaScript Objects

我想也许我错过了一些我现在正在接受的JavaScript。

我在Chrome控制台中尝试了此代码:

a = [];
a.name = "test";
JSON.stringify(a); 
// which returns value []
a = new Object();
a.name = "test";
JSON.stringify(a); 
// which returns value {"name":"test"}

有什么区别? 我以为新的Object()是Microsoft JScript的东西? 我错过了什么? 一定是错过某个地方的规格。 谢谢。

a = new Object()

a = []

不等同。 但,

a = {}

a = new Object()

是。

new Object()相当于{} (除非它不是因为奇怪的重定义问题 - 但现在忽略它。) []等同于new Array() ,然后你要添加一个.name属性。 JSON以特殊方式对数组进行字符串化,不会捕获对数组本身的任意属性。

对于JSON数据,数组意味着具有数字索引,而对象具有键/值对。

a = [];
a[ 0 ] = "test";

JSON.stringify(a); // returns value ["test"]

是的,您使用[]来定义实际上是数组的对象,但是根据您来自的语言可能会令人困惑,因为它不是关联数组。

默认对象是key-> data的所有映射,并使用大括号{}进行实例化

如果你这样做了

a = {};
a.name = "test";
JSON.stringify(a); 

它应该工作。

设置数组的name属性对其序列化(JSON字符串化)表单没有任何作用。 它没有在数组中放入一个条目。 要做到这一点,你需要a.push('test')

对象是Javascript的标准部分(例如,参见MDC文档 )。 创建对象的常规方法是使用{} ,但new Object()也可以使用。

所以...

var a = [];
a.push('test');
JSON.stringify(a); //"["test"]"

a = {};
a.name = 'test';
JSON.stringify(a); //"{"name":"test"}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM