23

尽管进行了很多谷歌搜索和拉扯头发,但我终其一生都无法阐明 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"}
    ]
}
4

5 回答 5

60

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"}
    ]
}

是一个对象,其中包含其他数组和对象。

于 2012-10-06T21:56:44.460 回答
10

JSONJavaScript 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

JavaScript 有几种数据类型:

数字

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}}
于 2012-10-06T22:09:22.007 回答
6

您使用{大括号}来声明一个对象字面量

您使用[方括号]来声明一个数组字面量

对象是键名值对的集合。

下面是一个字符串数组的例子:

var a = [ "one", "two", "three" ];

下面是一个代表人的简单对象的示例:

var personObject = {
    name: 'Joe',
    age: 25,
    hometown: 'New York'        
};
于 2012-10-06T22:06:02.307 回答
1

JSON 是一种文本数据交换格式。正如它的名字(“JavaScript Object Notation”)所暗示的,它起源于 JS;这意味着 JSON 实际上是语法上有效的 JavaScript。换句话说,您可以将 JSON 字符串直接粘贴到您的 JS 代码中。

数组是特殊的对象。它们可以由 构建[]

对象可以通过{}.

因此,您的示例中有两个 JSON 字符串,一个表示对象数组,第二个表示对象,其属性本身就是对象数组。

于 2012-10-06T22:09:30.493 回答
0

好吧,我相信对象可以具有方法和属性,而数组则不能。JSON 可以传递给服务器,而数组不能传递,除非你通过 POST 将它作为字符串传递

于 2012-10-06T21:58:04.727 回答