尝试获取数组中的所有 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);
});
实际数组要长得多 - 由于某种原因它只是返回最后一个对象。
最佳答案
您拥有的是有效的 JSON,但它没有正确表达您的意图。 "manufacturer"
(或 "name"
或 "cameras"
)不是类型名称,它是命名值集合中的唯一键——字典、映射、哈希等等 (1)。 JSON 数据结构只是 JavaScript 对象文字声明的一个子集(因此得名:JavaScript Object N强>旋转)。
所以上面的例子不是一个数组,它是对 "manufacturer"
的两次连续赋值。同一父对象的属性。解析器将第一个分配给 "manufacturer"
属性,然后将其替换为第二个(在您原来的更大的)“数组”中,然后将其替换为第三个,依此类推。
制造商对象中的“相机”属性是正常运行的数组。在更高的层次上做同样的事情——更像这样:
{
"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) 字典、映射、散列——或“关联数组”。但我不想在那段中称它为任何类型的“数组”,因为重点是它不是其他类型的数组。
关于javascript - Angular 只拉取最后一个 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20360907/