尝试获取数组中的所有JSON对象。它只返回最后一个。
以下是我的JSON示例:
{
"manufacturer":{
"name": "manufacturername",
"cameras": [
{
"name": "sdfsdfsd",
"type": "Audio device",
"resolution": "Unknown",
"channels": "1"
}
]
},
"manufacturer":{
"name": "manufacturername2",
"cameras": [
{
"name": "sdfsdf",
"type": "Camera",
"resolution": "720P/1.3MP",
"channels": "2"
},
{
"name": "D12",
"type": "Camera",
"resolution": "1080P/3MP",
"channels": "1"
}
]
}}
它是有效的JSON。
以下是我如何称呼它:
//Get Manufacturer data
$http.get('data2.json').success(function(data) {
$scope.maninfo = data;
console.log($scope.maninfo);
});
实际的数组要长得多 - 而且由于某种原因它只是返回最后一个Object。
答案 0 :(得分:4)
您拥有的是有效的JSON,但它没有正确表达您的意图。 "manufacturer"
(或"name"
或"cameras"
)不是类型名称,它是命名值集合中的唯一键 - 字典,地图,哈希,等等(1)。 JSON数据结构只是JavaScript对象文字声明的一个子集(因此名称: J ava S cript O bject N 强>浮选)。
因此上面的示例不是数组,它是同一父对象的"manufacturer"
属性的两个连续值赋值。解析器将第一个属性分配给"manufacturer"
属性,然后将其替换为第二个(以及原始的,更大的)“数组”,然后将其替换为第三个,依此类推。
manfacturer对象中的“cameras”属性是正常运行的数组。只是在更高层次做同样的事情 - 更像是这样:
{
"manufacturers":
[
{
"name": "manufacturername",
"cameras": [
{
"name": "sdfsdfsd",
"type": "Audio device",
"resolution": "Unknown",
"channels": "1"
}
]
},
{
"name": "manufacturername2",
"cameras": [
{
"name": "sdfsdf",
"type": "Camera",
"resolution": "720P/1.3MP",
"channels": "2"
},
{
"name": "D12",
"type": "Camera",
"resolution": "1080P/3MP",
"channels": "1"
}
]
}
]
}
(1)字典,地图,哈希 - 或“关联数组”。但我不想在该段中将其称为任何类型的“数组”,因为重点是它不是其他类型的数组。