2016-04-07 61 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