简体   繁体   English

JavaScript-连接两个JSON字符串(嵌套数组)

[英]JavaScript - Join two JSON strings (nested array)

I have two JSON strings that are constructed dynamically. 我有两个动态构造的JSON字符串。 The first one is created from an XML Document: 第一个是从XML文档创建的:

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,"")

The other one created on the spot from user input. 另一个是从用户输入现场创建的。

Both have the same structure. 两者具有相同的结构。 The first one is: 第一个是:

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

and the second one is: 第二个是:

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

How can I concatenate these two so the result is two 'Movie' inside a "Movies": The result should be: 如何将这两个连接起来,所以结果是在“电影”中有两个“电影”:结果应该是:

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

I know that one method is to push {"Title":"Movie2","Year":"2014"} into ["Movies"]["Movie"] ... but is there any other way? 我知道一种方法是将{“ Title”:“ Movie2”,“ Year”:“ 2014”}推入[“ Movies”] [“ Movie”] ...,但是还有其他方法吗?

Something like the concat method? 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);

So this is how I achieved what I wanted ... I guess the concat method would work too: 因此,这就是我实现所需目标的方式。我想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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM