2016-11-11 7 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

Хотя это идеальный ответ, мне бы понравилось, если бы ему разрешили делиться своими усилиями. – Rajesh

+0

Вау! Всего в 3 строках. Спасибо вам большое, сэр. – user1239980

0

С вашего вопроса, я понимаю, вы ожидаете формат «ключ: значение». Но вы JSON уже в этом формате.

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

В приведенном выше коде start представляет ключ, а массив - значение. Вы можете получить доступ к этому массиву, используя «object.start».