【问题标题】:Iterating Nested JSON to array of objects (JavaScript)将嵌套 JSON 迭代到对象数组 (JavaScript)
【发布时间】:2015-10-05 21:54:21
【问题描述】:

您好,我收到这样的 JSON 响应:

{
"20150917":
 {
     "Daily01sec":
        {
            "TG01152600000": "\/20150917\/Daily01sec\/TG0115260.bin",
            "TG01152600600": "\/20150917\/Daily01sec\/TG0115260.bin"
        }
    },
"201510":
    {
        "05":
        {
            "Daily01sec":
            {
                "TG01152780600": "\/201510\/05\/Daily01sec\/TG01152780600.bin"                       
            }
        }
    },
"201509":
    {
        "05":
        {
            "Daily01sec":
            {
                "TG01152780600": "\/201510\/05\/Daily01sec\/TG01152780600.bin"                     
            }
        }
    }
}

我想要一个索引数组及其对应数据的值。

我想要 data["20150917"],data["201510"],data["201509"] 以及对应的信息。

其实嵌套数据就是一个嵌套数据数组,

可以用angularJS ng-repeat解析吗?有什么想法吗?

【问题讨论】:

  • 我的目标是将第一个嵌套对象转换为对象数组
  • var object = JSON.parse(json_text); BTW 你的 json_text 似乎不一致。
  • @MaxZoom 我的代码似乎解析为 JSON,如果我这样做,它还会显示 SyntaxError: Unexpected token o at Object.parse (native)
  • @MaxZoom 我不明白你说的最后几个元素是什么意思!
  • @MaxZoom 我删除了最后的逗号

标签: javascript arrays json angularjs angularjs-ng-repeat


【解决方案1】:

在 JavaScript 中,对象是一个关联数组。

换句话说,myobj.datamyobj['data'] 相同——两者可以互换使用。所以你所要做的就是解析你的 JSON(如果还没有的话),你就可以开始了。

data = JSON.parse(json); 
console.log(data['20150917']);

http://jsfiddle.net/byjawop8/

编辑

您正在寻找for..in 语法,如下所示:

for(index in json){
    document.getElementById('r').insertAdjacentHTML('beforeEnd', index+" " + json[index]['05']['Daily01sec']['TG01152780600'] + "<br>");
}

http://jsfiddle.net/yjedwLws/1/

再次编辑

我在上一次编辑中为您提供了您所需要的内容,但我会再给您一个提示。此函数遍历 JSON,只要它按照您在上面发布的方式进行格式化,这会将整个内容转换为您可以轻松遍历的数组。

function arrayConvert(json){
    var arr = [];
    for(index in json){
        var obj = json[index];
        var key = null;
        while(typeof obj == 'object'){
            for(ind in obj){
                if(key == null) key = ind;
                obj = obj[ind];
            }
        }
        arr.push({'key':key, 'val':obj});
    }
    return arr;
}

还有一个小提琴:http://jsfiddle.net/yjedwLws/2/

【讨论】:

  • 感谢您的回复,我不知道索引“20150917”,因为它可能会在我从服务器获取的另一个 JSON 中发生变化!因此我需要轻松地迭代它们,这就是你遇到的问题?
  • @Ebrahim - 好的,我回答了你的问题,检查我的编辑。如果这有帮助,请点击复选标记。
  • 谢谢,我需要像这样迭代各种 JSON 响应。所以我一开始不知道结构,当我知道情况并且没有动态变化时,你的答案很好!
  • 答案与使用ng-repeat生成角度视图无关
  • @Ebrahim - 我已经给了你答案并为你完成了工作。请点击复选标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2023-03-21
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多