2016-11-11 167 views
-3

我需要改变JSON结构,但我挣扎如何做到这一点,而且我不知道我是否需要创建一个新的对象或者我可以对当前一个刚工作?如何更改JSON结构在JavaScript

反正这是我想改变JSON:

{ 
    "start": [ 
    {"time": 22, "value": 324, "year": 2016}, 
    {"time": 142, "value": 234, "year": 2016}, 
    ... 
    ], 
    "end": [ 
    {"time": 123, "value": 254, "year": 2016}, 
    ... 
    ] 
} 

它改成这样:

{ 
    "key": "start", 
    "values": [ 
    {"time": 22, "value": 324, "year": 2016}, 
    {"time": 142, "value": 234, "year": 2016}, 
    ... 
    ] 
}, { 
    "key": "end", 
    "values": [ 
    {"time": 123, "value": 254, "year": 2016}, 
    ... 
    ] 
} 
+0

http://www.w3schools.com/js/js_json.asp –

回答

2

可以映射对象并返回新值

var obj = { 
 
    "start": [ 
 
    {"time": 22, "value": 324, "year": 2016}, 
 
    {"time": 142, "value": 234, "year": 2016} 
 
    ], 
 
    "end": [ 
 
    {"time": 123, "value": 254, "year": 2016} 
 
    ] 
 
} 
 

 
var result = Object.keys(obj).map(k => { 
 
\t return {key : k, values : obj[k]} 
 
}).shift(); 
 

 
document.body.innerHTML = '<pre>' + JSON.stringify(result, 0, 4) + '</pre>';

+0

虽然这是理想的答案,我会如果OP被允许分享他的努力很喜欢。 – Rajesh

+0

哇!只有3行。先生,非常感谢你。 – user1239980

0

从你的问题,我的理解是你期待一个“关键:价值”格式。但你的JSON已经只有这种格式。

"start": [ 
    {"time": 22, "value": 324, "year": 2016}, 
    {"time": 142, "value": 234, "year": 2016} 
    ] 

在上面的代码中,start代表键,数组是值。您可以使用“object.start”访问该数组。