7

以下是 3 种 JSON 数组结构格式...

第一个,在 JSON.org 上概述的,是我熟悉的:

格式 #1

{"People": [
  {
    "name": "Sally",
    "age": "10"
  },
  {
    "name": "Greg",
    "age": "10"
  }
]}

第二个是命名数组元素的细微变化。我个人不关心它;您不在代码中命名数组的元素(它们通过索引访问),为什么要在 JSON 中命名它们?

格式 #2

{"People": [
  "Person1": {
    "name": "Sally",
    "age": "10"
  },
  "Person2": {
    "name": "Greg",
    "age": "10"
  }
]}

最后一个是另一种变体,与Format #2非常相似,但我有一种预感,这个是不正确的,因为它似乎有额外的花括号,它们不属于它们。

格式 #3

{"People": [
  {
    "Person1": {
      "name": "Sally",
      "age": "10"
    }
  },
  {
    "Person2": {
      "name": "Greg",
      "age": "10"
    }
  }
]}

同样,我相信Format #1是有效的,因为它是 JSON.org 中概述的 JSON Array 格式。但是,格式 #2格式 #3呢?其中任何一个都被认为是有效的 JSON 吗?如果是,这些格式是从哪里来的?我没有在 JSON.org 或 Wikipedia 上看到它们的概述。

4

2 回答 2

8

#1 和 #3 都是(几乎 - 缺少逗号)有效的 JSON,但编码不同的结构:

  • #1 给你一个对象数组,每个对象都有名字和年龄字符串属性
  • #3 给你一个对象数组,每个对象都有一个对象属性,每个对象都有名称和年龄字符串属性

#2 无效:数组(由[...定义])可能不包含属性名称。

于 2013-01-02T22:34:48.360 回答
1

Format#1的解决方案 默认情况下:

array=[];
object={};

JSON 代码:

var Json = {
    People:[]
};
Json.People.push({
     "name": "Sally",
     "age": "10"                        
});
Json.People.push({
     "name": "Greg",
     "age": "10"                        
});

JSON结果:

{"People": [ { "name": "Sally", "age": "10" }, { "name": "Greg", "age": "10" } ] }

于 2016-03-22T12:15:09.763 回答