如何使用jQuery合并两个json对象


How to merge two json object using jQuery?

我有两个json对象data和foo,我想合并它们并创建一个json物体。生成的json应该具有来自foo的所有值和来自data的值。到目前为止,我有一个类似的东西

javascript:

  $('#btn').click(function(){
            var imdbid=$('#tst').val();
            var url = "http://www.omdbapi.com/?i="+imdbid+"&plot=full&r=json"
            $.ajax({
            url:url,
            dataType:'json',
            success:function (json) {
                 data=json
                 var foo=$('form').serializeJSON() // store json string 
                 var marged=$.extend(data,foo);
                 console.log(marged);
                }
            })   
            }) 

HTML:

<form id="myform">
<label>imdb id:</label><input type="text"  id="tst" name="tst"/></form><br/>
<label>comment:-</label><input type="text" id="comment" name="comment" /><br/>
<label>link:-</label><input type="text" name="link" id="link" /><br/>
<input type="button" value="search"  id="btn"/>
</form>

第一个对象包含从api返回的数据,foo包含form的值。当我试图打印出数据时,如下

{Title: "Mother's Day", Year: "2016", Rated: "PG-13", Released: "29 Apr 2016", Runtime: "118 min"…}
Actors
:
"Britt Robertson, Jennifer Aniston, Julia Roberts, Timothy Olyphant"
Awards
:
imdbID
:
"tt4824302"
tst
:
"tt4824302"

它得到的是第一个输入值,而不是第二个。

您正在关闭此行上的FORM:

<label>imdb id:</label><input type="text"  id="tst" name="tst"/></form><br/>

因此它只得到第一个输入字段;)

首先将json更改为object,然后将它们合并为

data=json
var foo=$('form').serializeJSON();
marged=$.extend(JSON.parse(data),JSON.parse(foo));
console.log(marged);