2016-04-07 119 views
-3

我想合併json格式(優先使用下劃線),但不知道它是如何完成的。第一個json沒有要映射的_id指示符。合併兩個json格式基於

JSON 1:

{ 
    "0001": { 
     "answer": "sad" 
    }, 
    "0002": { 
     "answer": "sad1" 
    } 
} 

JSON 2:

合併後
[ 
    { 
     "_id": "0001", 
     "question": "who am I" 
    }, 
    { 
     "_id": "0002", 
     "question": "How old are you?" 
    } 
] 

最終結果:

[ 
    { 
     "_id": "0001", 
     "question": "who am I", 
     "answer": "sad" 
    }, 
    { 
     "_id": "0002", 
     "question": "How old are you?", 
     "answer": "sad1" 
    } 
] 

爲方針,我試圖改變JSON 1至以下格式第一但無法實現。

[ 
    { 
     "_id": "0001", 
     "answer": "sad" 
    }, 
    { 
     "_id": "0002", 
     "answer": "sad1" 
    } 
] 
+2

一樣方便'arr.map(O => { o.answer = obj [o._id] .answer; return o; })'。但我沒有嘗試任何東西。 – Tushar

+1

請看看** JSON 1 **,它不是一個數組。 – Fabricio

+0

@Fabricio是的,我很清楚這一點。 – stackdisplay

回答

1

好了,你可以做一個foreach添加新的答案元素:

var json1 = { 
    "0001": { 
     "answer": "sad" 
    }, 
    "0002": { 
     "answer": "sad1" 
    } 
}; 

var json2 = [ 
    { 
     "_id": "0001", 
     "question": "who am I" 
    }, 
    { 
     "_id": "0002", 
     "question": "How old are you?" 
    } 
]; 

json2.forEach(function(o) { 
    o.answer = json1[o._id].answer; 
}); 

console.log(json2); 

我希望幫助:d

+0

嗨,什麼是? json1?它不適用於我 – stackdisplay

+0

對不起,我在代碼中有一個錯字。請檢查我是否已經用** json1 **取代了** a **。它現在正在爲我工​​作。 – Fabricio

+0

@stackdisplay - 'json1'只是一個變量名。記住JSON只是一個標準的JS對象,可以像一個一樣使用。 – evolutionxbox