JavaScript - 如何以这种方式格式化这个JSON?

时间:2016-05-03 16:32:52

标签: javascript json

我想知道如何格式化以下JSON:

{  
    "names":{  
        "Nancy":[  
        ],
        "Charles":[  
        ]
    }
}

以下一个:

{  
    "names":{  
        0: Object
         "Nancy":[  
        ],
        1: Object
        "Charles":[  
        ]
    }
}

到目前为止,我的代码是:

for(var i=0; i < this.data.length; i++){  
    storeInfo[i] = this.data[i];
    var row = storeInfo[i];

    result.names[row.info] = result.names[row.info] || []; 
    result.names[row.info];
}

我愿意以这种方式names[i]检索数据,这就是我需要转换它的方式。

我认为为了达到想要的结果,我们需要在数组中设置一个集合。到最后,我们将在一个数组中拥有多个集合。如果你有更好的方法,请建议。

3 个答案:

答案 0 :(得分:0)

假设namesdata中的唯一键:

var data = {
    "names":{
        "Nancy" : [1,2,3],
        "Charles" : [4,5,6],
        "Dingo" : [7, 8, 9]
    }
}

var i = 0;
for(var name in data.names)
{
    data.names[i] = {};
    data.names[i][name] = data.names[name];
    delete data.names[name];
    ++i;
}

在此data结束时将等于:

data = {
    "names" : {
        "0" : { "Nancy" : [1,2,3] },
        "1" : { "Charles" : [4,5,6] },
        "2" : { "Dingo" : [7, 8, 9] }

    }
}

答案 1 :(得分:0)

假设

data = {  
    "names":{  
        "Nancy":[  
        ],
        "Charles":[  
        ]
    }
}

你的意思是你想要这个?

{  
    "names":{  
        "0": { "Nancy":[  
        ] },
        "1": { "Charles":[  
        ] }
    }
}

所以:

var result = { "names" : {} }

var keys = Object.keys(data.names);

for(var i=0; i < keys.length; i++){  
    obj = {};
    obj[keys[i]] = data.names[keys[i]];
    result.names[i] = obj; 
}

答案 2 :(得分:0)

虽然已经有其他人在这里回答,但如果只是在obj中打印值,则不需要更改对象。可能这可以帮助,

var data ={  
    "names":{  
        "Nancy":[1,2],
        "Charles":[ 3,4 ]
    }
}

for(var obj in data.names){
    console.log(data.names[obj]);
}

小提琴--- https://jsfiddle.net/2dkn9ehn/