在不使用jQuery的情况下连接两个JSON对象
Concatenate two JSON objects without jQuery
我有两个JSON对象,我想用Angular或纯JavaScript(没有jQuery)创建一个对象。Angular.extend似乎并没有得到我想要的,而是做了更多的合并。
{
"field1-1": 1,
"field1-2": 2,
"field1-3": 3,
"field1-4": "four",
"field1-5":
{
"field1-1-1": 5.1,
"field1-1-2": 5.2
}
}
和
{
"field2-1": 21,
"field2-2": 22,
"field2-3": "three",
"field2-4":
{
"field2-1-1": 4.1,
"field2-1-2": 4.2
}
}
我希望最终结果是:
{
"field1-1": 1,
"field1-2": 2,
"field1-3": 3,
"field1-4": "four",
"field1-5":
{
"field1-1-1": 5.1,
"field1-1-2": 5.2
}
},
{
"field2-1": 21,
"field2-2": 22,
"field2-3": "three",
"field2-4":
{
"field2-1-1": 4.1,
"field2-1-2": 4.2
}
}
所以你想要一个数组:
var array = [object1, object2];
var object1 = { "field1-1": 1, "field1-2": 2, "field1-3": 3, "field1-4": "four", "field1-5": { "field1-1-1": 5.1, "field1-1-2": 5.2 } },
object2 = { "field2-1": 21, "field2-2": 22, "field2-3": "three", "field2-4": { "field2-1-1": 4.1, "field2-1-2": 4.2 } },
array = [object1, object2];
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
如果你想得到一个单一的对象,那么你可以使用这个提议。
它在带有对象的数组上迭代,然后在对象的键上迭代。原始对象的值将指定给新对象的相应特性。
var object1 = { "field1-1": 1, "field1-2": 2, "field1-3": 3, "field1-4": "four", "field1-5": { "field1-1-1": 5.1, "field1-1-2": 5.2 } },
object2 = { "field2-1": 21, "field2-2": 22, "field2-3": "three", "field2-4": { "field2-1-1": 4.1, "field2-1-2": 4.2 } },
object = function (array) {
var o = {};
array.forEach(function (a) {
Object.keys(a).forEach(function (k) {
o[k] = a[k];
});
});
return o;
}([object1, object2]);
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
除非我弄错了,否则您想要的结果看起来像一个包含两个对象的简单数组:
var result = [objectOne, objectTwo];
这与想要将两个对象连接(或合并)为一个对象(angular.extend
或Object.assign
会这样做)截然不同。
您的最终结果实际上不是有效的JSON。假设对象是名为object1
和object2
的变量,您可以创建这样的数组:
var objectArray = [ object1, object2 ];
谢谢大家!
我试图创建一个由多个对象组成的聚合对象,作为从angular到基于javaEE的API的rest调用的整体对象发送,该API将对象作为RESTurl的参数和动态变量。我曾假设对象不需要在json中有密钥,但我错了。
所以我现在发送的对象基本上是:
"dynamicID": "keyValue",
"object1":
{
"field1-1": 1,
"field1-2": 2,
"field1-3": 3,
"field1-4": "four",
"field1-5":
{
"field1-1-1": 5.1,
"field1-1-2": 5.2
}
},
"object2":
{
"field2-1": 21,
"field2-2": 22,
"field2-3": "three",
"field2-4":
{
"field2-1-1": 4.1,
"field2-1-2": 4.2
}
}
我只是简单地创建了一个新对象:
$scope.restObject = {"dynamicID": $scope.keyValue, $scope.object1, $scope.object2}
相关文章:
- 正在更新mongod中两个对象内部的数组
- 添加两个对象以获取值的总和
- 如何使用javascript合并两个对象数组
- 在JavaScript中相等两个对象.在更改一时,秒会自动更改
- 如何使用AngularJs比较两个对象的JSON
- 如何在javascript中合并两个对象数组
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- Javascript如何确定两个对象是否相同
- 比较两个对象数组
- Javascript tests - 如何比较 Jasmine 中的两个对象
- JavaScript:为什么 array.push() 附加两个对象而不是一个对象
- 两个对象相等,但 js 确实说假
- 两个对象之间的Javascript原型
- 使用angularjs或javascript的两个对象数组的交集
- 合并两个对象而不覆盖
- 如何获取具有相同值的两个对象,并将其视为一个对象
- 比较两个对象数组中的重复对象,并在其'这在JavaScript中不是重复的
- 比较underscorejs中的两个对象数组
- 查找/合并具有共同属性的两个对象
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中