如何使钥匙另一个嵌套JSON从嵌套的JSON
问题描述:
被来自source的字符串零散JSON对象即将在JSON object.I想这个JSON结构转换为另一种简单的JSON结构:如何使钥匙另一个嵌套JSON从嵌套的JSON
{
"nestA":{
"a":"link",
"b":2711
},
"nestB":{
"a":"img",
"b":4165
}
}
可以把它改成像
{
"key":"nestA"
"a":"link"
"b":711
},
{
"key":"nestB"
"a":"img"
"b":165
}
答
//convert json string into an object
var json = '{"nestA":{"a":"link","b":2711},"nestB":{"a":"img","b":4165}}'
var sourceObject = JSON.parse(json);
//get a list of the object keys
var keys = Object.keys(sourceObject);
//create a new array to hold our output
var array = [];
//loop through our keys adding them to our array in the format we want
keys.forEach(function(key){
\t var nest = sourceObject[key];
\t nest.key = key;
\t array.push(nest);
});
//convert our array back to json
var result = JSON.stringify(array);
console.log(result);
答
JSON的,最好先分析它,修改它,然后把它放回JSON:
var orgObj = JSON.parse(orgJSON);
var newArr = [];
for(var key in orgObj){
var temp = { key: key };
Object.assign(temp, orgObj[key]);
newArr.push(temp);
}
var newJSON = JSON.stringify(newArr);
假设数组就是你要做的。请清理你想要的JSON。
不使用ES6 for循环可能是:
for(var key in orgObj){
orgObj[key].key = key;
newArr.push(orgObj[key]);
}
但orgObj
将得到修改。
答
var json = [{
"nestA":{
"a":"link",
"b":2711
},
"nestB":{
"a":"img",
"b":4165
}
}];
var arr = [];
json.forEach(function(v) {
Object.keys(v).forEach(c => arr.push(v[c]));
arr.forEach((b, x) => b['key'] = Object.keys(v)[x]);
});
console.log(arr);
+0
感谢您向我展示代码片段awesomeness :) – FreakinaBox
+0
@FreakinaBox我认为你的解决方案也很好(: –
首先,JSON是一个字符串,所以你需要JSON.parse它与对象的工作......一旦你创建了对象以期望的格式,您需要JSON.stringify对象以返回到JSON –
您可以通过使用['Object.keys(some_object)'](http:// stackoverflow)获取对象的键列表。 COM /一个/1848578分之8763227) 。然后你可以遍历这些,在你想要的结构中添加一个新的数组。 – qxz
你想把它变成一个数组吗?第二部分是无效的JSON – lonewarrior556