JSON数组可以包含不同键/值对的对象吗?

ton*_*nga 19 javascript arrays json

JSON数组是否可以包含不同键/值对的对象.在本教程中,为JSON数组提供的示例包含相同键/值对的对象:

{
"example": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
Run Code Online (Sandbox Code Playgroud)

如果我想将其更改为在JSON数组中具有不同的键/值对,则以下是否仍然是有效的JSON?

{
"example": [
{ "firstName":"John", "lastName":"Doe" },
{ "fruit":"apple" },
{ "length":100, "width":60, "height":30 }
]
}
Run Code Online (Sandbox Code Playgroud)

只是想确认一下.如果是这样,我如何使用JavaScript来了解JSON "example"字段是否包含第一个同类对象或第二个异构对象?

Ben*_*ick 19

您可以使用任何您喜欢的结构.JSON不是以经常使用XML的方式构建的,并且Javascript不是静态类型的.

您可以使用JSON.parse将JSON转换为JS对象,然后只测试属性的存在

var obj = JSON.parse(jsonString);
if(typeof obj.example[0].firstName != "undefined") {
   //do something
}
Run Code Online (Sandbox Code Playgroud)

  • @tonga 您将无法以这种方式测试数组的同质性。只有在处理完所有项目之前,您才能知道数组是否是同类的 (2认同)

Dan*_*ite 5

你可以根据需要混合搭配并不重要.

你可以测试它

typeof someItem.example !== 'undefined' // True if `example` is defined.
Run Code Online (Sandbox Code Playgroud)