Angular只拉动最后一个JSON对象

时间:2013-12-03 20:23:19

标签: javascript json angularjs

尝试获取数组中的所有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。

1 个答案:

答案 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)字典,地图,哈希 - 或“关联数组”。但我不想在该段中将其称为任何类型的“数组”,因为重点是它不是其他类型的数组。