2014-01-28 3 views
0

У меня есть две строки JSON, которые построены динамически. Первый создается из XML-документа:JavaScript - Присоедините две строки JSON (вложенный массив)

if (window.DOMParser) { 
     parser = new DOMParser(); 
     xmlDoc = parser.parseFromString(xml_string, "text/xml"); 
    } else// Internet Explorer 
    { 
     xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = false; 
     xmlDoc.loadXML(xml_string); 
    } 
var json_str = xml2json(xmlDoc,"") 

Другой создано на месте от пользовательского ввода.

Оба имеют одинаковую структуру. Первый:

{"Movies": { "Movie": [{"Title":"Movie1","Year":"2013"}]}}; 

и второй из них:

{"Movies": { "Movie": [{"Title":"Movie2","Year":"2014"}]}}; 

Как я могу объединить эти два так что результат два «Фильм» внутри «Фильмы»: Результат должен быть:

{"Movies": { "Movie": [{"Title":"Movie1","Year":"2013"},{"Title":"Movie2","Year":"2014"}]}}; 

Я знаю, что один метод должен нажать { "Название": "видеофильм2", "Год": "2014"} Into [ "Фильмы"] [ "Кино"] ... но есть ли другой способ?

+0

Возможный дубликат: http://stackoverflow.com/questions/10384845/ merge-two-json-objects-in-to-one-object –

+0

Вы можете использовать функцию открутки Underscorejs (http://underscorejs.org/#pluck), чтобы вырезать все заголовки. – Jason

+0

Возможный дубликат [Объединить два json-объекта с jquery] (http://stackoverflow.com/questions/8478260/merge-two-json-objects-with-jquery) – Bergi

ответ

0

Так это, как я достиг того, что я хотел ... Я предполагаю, что метод CONCAT будет работать тоже:

json_obj = JSON.parse(sessionStorage.getItem('object')); //->Creating JSON object from string format 

var new_item = {"Vendor":'GUY', "Title": '...', "Year":'...'}; 

json_obj["Movies"]["Movie"].push(new_item); 

JSON.stringify(json_obj) //-> String format 
0

Что-то вроде метода concat?

var a = {"Movies": { "Movie": [{"Title":"Movie1","Year":"2013"}]}}; 
var b = {"Movies": { "Movie": [{"Title":"Movie2","Year":"2014"}]}}; 

var c = {"Movies": { "Movie": a.Movies.Movie.concat(b.Movies.Movie) }}; 
console.log(c); 
+0

Черт. Beat меня к этому;) Вот jsfiddle, который выглядит ужасно похожим на ответ выше http://jsfiddle.net/Fresh/ZLHQF/ –

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