jQuery-从平面json创建嵌套的json [英] jquery - creating nested json from flat json

查看:129
本文介绍了jQuery-从平面json创建嵌套的json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是JSON数据.

JSON:

[{
    "Code":"US-AL",
    "Name":"Alabama",
    "Population":4833722
    },
    {
    "Code":"US-AK",
    "Name":"Alaska",
    "Population":735132
    },
    {
    "Code":"US-AZ",
    "Name":"Arizona",
    "Population":6626624
    },
    {
    "Code":"US-AR",
    "Name":"Arkansas",
    "Population":2959373
    },
    {
    "Code":"US-CA",
    "Name":"California",
    "Population":38332521
    },
    {
    "Code":"US-CO",
    "Name":"Colorado",
    "Population":5268367
    },
    {
    "Code":"US-CT",
    "Name":"Connecticut",
    "Population":3596080
}]

我想将该数据转换为这种格式.

I wanted to convert that data to this format.

[{
    "US-AL": {
        "name" : "Alabama",
        "population" : 4833772
    },
    "US-AK": {
        "name" : "Alaska",
        "population" : 735132
    }
}]

我尝试过使用此功能,并从中分离出名称和人口.

I tried with this function and separated the name and population from it.

var ParentData = [];
var ChildData = {"name": [], "population": []};

data.forEach(function(val, i) {

    ParentData.push(val.Code);
    ChildData.name.push(val.Name);
    ChildData.population.push(val.Population);

})

但是我不是那个专家.只是一个学习者,我不知道如何推送分别与之对齐的父数据.

But I'm not that expert in this. Just a learner and I don't know how to push to the parent data which gets aligned to it respectively.

任何帮助对我实现这一目标都将非常有帮助.

Any help will be very much helpful for me to achieve this.

谢谢.

推荐答案

尝试一下:

var newData = {};
data.forEach(function(val) {
    newData[val.Code] = {name: val.Name, population: val.Population};
});

请记住,IE8本身并不支持forEach,尽管可以将其填充.这适用于所有浏览器:

Keep in mind that forEach isn't natively supported by IE8-, although it can be polyfilled. This works in every browser:

for (var i = 0; i < data.length; i++)
    newData[data[i].Code] = {name: data[i].Name, population: data[i].Population};

或者,由于您添加了"jquery"标签,因此您还可以使用:

Or, since you added the "jquery" tag, you can also use:

$.each(data, function() {
    newData[this.Code] = {name: this.Name, population: this.Population};
});

这篇关于jQuery-从平面json创建嵌套的json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆