【问题标题】:Separate Nested JSON objects分离嵌套的 JSON 对象
【发布时间】:2015-01-17 14:12:44
【问题描述】:

所以我可能想多了,但我有一个 JSON 数组,其中包含多个级别的嵌套 JSON 对象,如下所示:

var OldJSON =  
    {  
   "data":{  
      "shifts":{  
         "data":[  
            {  
               "id":1234,
               "entry_time":"2012-06-11 16:06:04",
               "attendance_id":1
            },
            {  
               "id":4321,
               "entry_time":"2014-07-23 17:29:04",
               "attendance_id":2
            }
         ]
      },
      "sites":{  
         "data":[  
            {  
               "id":4321,
               "name":"John Doe",
               "type":"field",
               "bases":{  
                  "data":[  
                     {  
                        "id":1234,
                        "type":"field",
                        "active":false
                     },
                     {  
                        "id":4321,
                        "type":"field",
                        "active":true
                     }
                  ]
               }
            },
            {  
               "id":1234,
               "name":"Jill Doe",
               "type":"field",
               "bases":{  
                  "data":[  
                     {  
                        "id":1234,
                        "type":"field",
                        "active":false
                     },
                     {  
                        "id":4321,
                        "type":"field",
                        "active":true
                     }
                  ]
               }
            }
         ]
      }
   }
}

我想要做的是将“基础”对象从“站点”对象中分离出来并重新组织 JSON,使其看起来像这样:

var NewJSON = 
{  
   "data":{  
      "shifts":{  
         "data":[  
            {  
               "id":1234,
               "entry_time":"2012-06-11 16:06:04",
               "attendance_id":1
            },
            {  
               "id":4321,
               "entry_time":"2014-07-23 17:29:04",
               "attendance_id":2
            }
         ]
      },
      "sites":{  
         "data":[  
            {  
               "id":4321,
               "name":"John Doe",
               "type":"field"
            },
            {  
               "id":1234,
               "name":"Jill Doe",
               "type":"field"
            }
         ]
      },
      "bases":{  
         "data":[  
            {  
               "id":1234,
               "type":"field",
               "active":false
            },
            {  
               "id":4321,
               "type":"field",
               "active":true
            }
         ]
      }
   }
}

我在我的项目中使用 Javascript 和 Angular 以及下划线。因此,理想情况下,该解决方案将利用这三个中的一个。我想出的所有东西看起来都很丑,所以我想知道是否有一种简单的方法可以做这样的事情而我忽略了。

【问题讨论】:

  • 对于初学者,你的规范化器应该存在于你的$resourcetransformResponse 函数中
  • 您能否详细说明这在这种情况下有何帮助?

标签: javascript json angularjs


【解决方案1】:

这段代码呢,太丑了?

var data = JSON.parse(/*Your JSON */).data;
var bases = [];
var i;
var sites = data.sites.data;
var len = sites.length;

for (i = 0; i < len; i++) {
    var site = sites[i];
    var base = site.data.bases;

    bases.push(base.date);

    delete site.data.bases;
}

data.bases = {data : Array.prototype.concat.apply([], bases) };

【讨论】:

  • 谢谢!对我来说看起来不错,除了 bases 是一个数组而不是 bases{data:[]}
  • 对不起,现在怎么样?
猜你喜欢
  • 1970-01-01
  • 2015-08-23
  • 2020-10-17
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 2014-02-11
相关资源
最近更新 更多