2017-02-23 138 views
1

被來自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 
} 
+0

首先,JSON是一個字符串,所以你需要JSON.parse它與對象的工作......一旦你創建了對象以期望的格式,您需要JSON.stringify對象以返回到JSON –

+0

您可以通過使用['Object.keys(some_object)'](http:// stackoverflow)獲取對象的鍵列表。 COM /一個/1848578分之8763227) 。然後你可以遍歷這些,在你想要的結構中添加一個新的數組。 – qxz

+1

你想把它變成一個數組嗎?第二部分是無效的JSON – lonewarrior556

回答

2

//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);

1

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將得到修改。

1

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我認爲你的解決方案也很好(: –