2013-01-02 32 views
6

下面是3种JSON阵列结构格式...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" 
    } 
]} 

这最后一个是另一种变体,神似格式#2,但我有一种预感,这个人是不正确,因为它似乎有额外的花括号哪里他们不属于。

格式#3

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

同样,我相信格式#1是有效的,因为它是在JSON.org列出的JSON格式数组。但是,格式#2格式#3?那些被认为是有效的JSON?如果是,那么这些格式从哪里来?我没有在JSON.org或维基百科上看到它们。

+0

其实,他们都无效:http:// jsonlint .com/ – Pete

+0

哎呀,我错过了一些标点符号...修复。 – MikeS

回答

7

两个#1和#3(接近 - 有逗号丢失)有效的JSON,但编码不同的结构:

  • #1给你一个阵列对象,每名和年龄String类型的属性
  • #3给你的对象,每一个阵列与单一对象属性,EAC h姓名和年龄字符串属性

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

1

解决方案对于格式#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" } ] }