尽管有大量的谷歌搜索和拉扯,我不能为我的生活阐明json,对象和数组(在javascript中)之间的区别。下面是我如何使用二维数据容器(害怕在这里使用“数组”,“对象”或“json”)。请告诉我这两个例子是什么?
//first example:
[
{"record_id":1,"name":"Frank"},
{"record_id":2,"name":"Sally"}
]
//second example:
{
"countries":
[
{"id":1,"name":"Canada"},
{"id":2,"name":"Mexico"}
],
"states":
[
"id":1,"name":"Maine"},
{"id":2,"name":"Alaska"}
]
}
答案 0 :(得分:55)
JSON是数据结构的表示,它不是对象或数组。
[1,2,3]
是一个数组。
{"foo":"bar"}
是一个对象。
在您的示例中,
[
{"record_id":1,"name":"Frank"},
{"record_id":2,"name":"Sally"}
]
是一个对象数组。
{
"countries":
[
{"id":1,"name":"Canada"},
{"id":2,"name":"Mexico"}
],
"states":
[
{"id":1,"name":"Maine"},
{"id":2,"name":"Alaska"}
]
}
是一个对象,其中包含其他数组和对象。
答案 1 :(得分:7)
JSON 是JavaScript Object Notation
。这只是一种写下JavaScript数据类型的方法。它本身并不是一种数据类型。
请参阅下面的JavaScript数据类型的一些示例,以及创建它们的文字表示法。
例如,可以使用JSON将数据从服务器发送到浏览器,因为JavaScript很容易解析为普通的JavaScript数据结构。在您的示例中,您使用的是对象列表和对象对象。
这是一个包含3个空对象的列表。
[{}, {}, {}]
这是三个简单记录的列表:
var mylist = [
{name: 'John', age: 24},
{name: 'Bill', age: 42},
{name: 'Jill', age: 18},
]
你可以像这样访问它:
mylist[1].name
>>> 'Bill'
mylist[2].age
>>> 18
<强>数强>
1
100
-2000
123.45
<强>字符串强>
"Hi John"
"Message:\nGo Forth"
<强>布尔强>
true
false
<强>阵列强>
[1,2,3]
[]
["a", "b", 123]
["a", "b", 123, [3,4,5]]
<强>对象强>
{}
{a: 10}
{mylist: [1,2,3], yourlist: [4,5,6]}
{myself: {name: 'me', age: 10}, yourself: {name: 'you', age: 20}}
答案 2 :(得分:5)
您使用{
大括号}
来声明对象文字。
您使用[
方括号]
来声明数组文字。
对象是键名值对的集合。
以下是字符串数组的示例:
var a = [ "one", "two", "three" ];
以下是代表一个人的简单对象的示例:
var personObject = {
name: 'Joe',
age: 25,
hometown: 'New York'
};
答案 3 :(得分:1)
JSON是一种文本数据交换格式。正如它的名字(“JavaScript Object Notation”)所暗示的那样,它起源于JS;这意味着JSON实际上是语法上有效的JavaScript。换句话说,您可以将JSON字符串直接粘贴到JS代码中。
数组是特殊的对象。它们可以由[]
构建。
可以通过{}
构建对象。
所以你的例子中有两个JSON字符串,一个代表一个对象Array,第二个代表一个Object,它的属性本身就是Arrays of Objects。
答案 4 :(得分:0)
我相信对象可以拥有方法和属性而数组不能。除非您通过POST
将其作为字符串传递,否则JSON可以在数组不能传递给服务器