我有两个JSON对象,我想将它们合并:
Object1: {"9":{"322":{"option0":"177"}}}
Object2: {"10":{"323":{"option":"456"}}}
我希望最终结果像这样:
{
"9": {
"322": {
"option0": "177"
}
},
"10": {
"323": {
"option": "456"
}
}
}
我尝试了concat方法,但结果是这样的:
{
"9":{
"322":{
"option0":"177"
}
}
}
{
"10":{
"323":{
"option":"456"
}
}
}
PS:对象是通过输入获取的,就像这样:
var object1 = $('input').val();
答案 0 :(得分:3)
使用<%
String foo = "foo";
String bar = "bar";
StringBuilder sb = new StringBuilder();
sb.append(foo);
sb.append(bar);
%>
<%= sb.toString();%>
Object.assign()
答案 1 :(得分:2)
ES6方式:
const object1 = {"9":{"322":{"option0":"177"}}}
const object2 = {"10":{"323":{"option":"456"}}}
const object3 = { ...object1, ...object2 }
console.log(object3)
Codepen:
https://codepen.io/anon/pen/eLxBdK?editors=0001
尽可能使用ES6语法。
答案 2 :(得分:1)
实际上,这些是objects
而不是JSON Arrays
,并且您得到了array
的结果,因为Array#concat()
将返回array
,而您想要的是object
。
所以您可以使用 Object.assign()
method :
let obj = Object.assign({}, JSON.parse(o1), JSON.parse(o2));
注意:
如果您从input
获取这些对象,则将它们作为strings
获取,您需要使用JSON.parse()
对其进行解析以获取正确的objects
。
let o1 = '{"9":{"322":{"option0":"177"}}}';
let o2 = '{"10":{"323":{"option":"456"}}}';
let obj = Object.assign({}, JSON.parse(o1), JSON.parse(o2));
console.log(obj);
答案 3 :(得分:1)
由于您是从文本字段获取值的,因此它们最初将是JSON字符串。为了将它们视为对象并合并,则需要首先对其进行解析。然后,您可以使用jQuery的$.extend()
方法来实现所需的输出,该方法将一个对象合并到另一个对象中。
演示:
var obj1 = JSON.parse($("#obj1").val());
var obj2 = JSON.parse($("#obj2").val());
var merged= $.extend({}, obj1, obj2);
console.log(merged);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="obj1" value='{"9":{"322":{"option0":"177"}}}'/>
<input type="text" id="obj2" value='{"10":{"323":{"option":"456"}}}'/>