我一直用
var j= {};
j['field'] = value;
显然下面的作品
var j= [];
j['field'] = value;
有什么不同吗?
编辑:对不起我想我在这里使用了错误的单词json而不是对象。我的错。但我的问题直到现在。大多数人都在解释我熟悉的数组和对象之间的区别。
我总是做var x = []; x.push('blah')等。
我也做var x = {}; x.Name ='迈克尔'; x.Age = 21等。
我很惊讶地看到了什么促使我问这个是我看到了类似的代码 var x = []; x.name ='迈克尔';
这是我不习惯的事情,因此发布了这个问题。
感谢所有答案。我已经标记了已接受的答案,该答案最能解决我的问题
答案 0 :(得分:9)
您的对象不是“JSON”,它们是(空的)对象和数组文字。 JSON是通过传递JSON.stringify
的值得到的序列化表单。
如果您尝试将其转换为JSON,后者将无效,即使它是合法的JavaScript:
var json = []; // ok, it's an array
json["field"] = "value"; // still OK - arrays can have properties too
JSON.stringify(json);
> "[]"
即。你得到一个空数组,因为当你尝试序列化一个数组时,你只能从0
到myArray.length - 1
得到数字索引的属性,而不是命名属性。
答案 1 :(得分:3)
[]是一个数组初始值设定项
{}是一个对象初始值设定项
答案 2 :(得分:3)
[]
是零长度数组文字。
{}
是一个空对象文字。
答案 3 :(得分:1)
[]
创建Array
实例(具有某些其他属性/方法的对象实例),{}
和Object
实例。
使用[]
创建的文件将包含来自Array
原型的方法,如push()
,slice()
等。而第二个则不会。
答案 4 :(得分:1)
[]
是数组,{}
是文字对象。
你可以做这两件事,因为两者都是JavaScript原始对象。
在数组中执行此操作时,您要在数组对象中设置属性,而不是向其中添加项目。
当您在文字对象中执行此操作时......如上所述,您正在该对象中设置属性。
答案 5 :(得分:1)
没有区别。
在这两种情况下,您都在对象上设置属性。只是第二个对象是一个数组。
换句话说,在后一个示例中,您有效地使用了在前一个示例中使用的相同技术,即,您正在对象上设置属性。在这种情况下,一个数组。但是你没有改变数组的内容。
答案 6 :(得分:1)
下面是一个javascript对象,
var json = {};
json['field'] = value; //Valid
下面是一个javascript数组,
var json = [];
//Below does not set the value in array instead it sets a property name field.
//json['field'] = value;
json.push(value); //proper way to add an element to an array
两者都是Javascript对象,与JSON无关。
JSON是一种符号,一种遵循不同语言的约定,便于数据通信。基本上,上面的内容将根据JSON约定转换为字符串文字,可以在不同的语言中读取。
有两种方法,
JSON.stringify
- 按照JSON表示法将上述内容转换为字符串文字。JSON.parse
- 将JSON字符串文字转换为有效的javascript对象。在大多数语言中,相同的功能可用作库,使您可以轻松地跨不同语言进行通信。