javascript - Angular 只拉取最后一个 JSON 对象

标签 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);
});

实际数组要长得多 - 由于某种原因它只是返回最后一个对象。

最佳答案

您拥有的是有效的 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/

相关文章:

javascript - AngularJS 继承模式不使用作用域?

android - JSON Android 解析JSONArray

angularjs - 一个链如何连续/连续的 $http 以 Angular 发布?

javascript - JQuery 展开页面的所有可折叠部分(来自外部网站)

asp.net - 将 Javascript 与 ASP.Net 控件结合使用

javascript - NodeJS : Convert table string (with\n\r and\t) to JSON

javascript - 使用 Json 和 Jquery 的 Asp.net MVC4 中的级联下拉列表不填充

javascript - 在angular js中向对象添加数组属性

javascript - 如何以 Angular 从 iframe 获取 HTML

javascript - 使用 CSS (JS) 动画(绘制)SVG 摄影路径和填充