2012-03-20 3 views
0

У меня есть переменная JSON, который выглядит следующим образом:Как передавать данные в формате JSON переменной

{"events": [ 
{"event_id": "1", "event_name": "Breakfast"}, 
{"event_id": "1", "event_name": "Calling Bob"} 
]} 

Мне нужно нажать еще один атрибут в каждом случае с Javascript и сделать его выглядеть следующим образом:

{"events": [ 
{"event_id": "1", "event_name": "Breakfast", "event_type": "calendar"}, 
{"event_id": "1", "event_name": "Calling Bob", "event_type": "calendar"} 
]} 

ответ

5

Если у вас есть

var obj = {"events": [.... 

затем просто использовать

for (var i = 0; i < obj.events.length; ++i) 
    obj.events[i].event_type = "calendar"; 

Или оптимизировать:

for (var i = 0, len = obj.events.length; i < len; ++i) 
    obj.events[i].event_type = "calendar"; 
+0

Большое спасибо, он работает точно так, как я намеревался! –

+0

Рад знать, что это помогло! –

3

преобразовать его в Object первый:

var obj = JSON.parse(theJSON); 

for(var i = 0; i < obj.events.length; ++ i) 
    obj.events[i].event_type = "calendar"; 

theJSON = JSON.stringify(obj); 
+0

WTF вы делаете? что не имеет никакого отношения к проблеме OP. Просто вставьте запись в массив. Не нужно строгать/разбирать. – Christoph

+1

Он прямо сказал, что он работал с _JSON_, а не с объектом JS. –

+0

@ Christoph - Это именно проблема OPs ... он не хочет вставлять еще один элемент в массив ... снова прочитайте вопрос. (+1, но рассмотрим переход в обычный цикл 'for') –

1
var yourJson = {"events": [ 
    {"event_id": "1", "event_name": "Breakfast"}, 
    {"event_id": "1", "event_name": "Calling Bob"} 
]}; 

for(var eventKey in yourJson.events) { 
    yourJson.events[eventKey]['event_type'] = 'calendar'; 
} 
+0

Пожалуйста, см. Мой комментарий к ответу Джеймса Маклафлина, почему для итерации по массиву не рекомендуется. Помимо того, что он немного медленнее, чем обычная индексированная итерация. –

+0

спасибо за ответ, я узнал что-то новое от него .. как использовать эту фантазию для цикла :) –

Смежные вопросы