假设我有这样的json:
[
{
"a": 1,
"b": 2,
"c": 3,
},
{
"a": 1,
"b": 2,
"d": 4
}
]
是否可以写一个JsonPath来给我:
{
"a": 1,
"b": 2,
"c": 3,
"d": 4
}
列表中元素的顺序不确定,但是我事先知道的元素名称。所以我认为我可以使用JsonPath选择所有名称为' a',' b',' c'或者' d'并将它们放在一个对象中。但是,我现在尝试了几件事情,我开始怀疑我想要的是否可能。
例如,我可以选择一个具有元素c的对象:
$[?(@.c)]
我还可以选择d的值,例如:
$..d
但是我找不到任何方法将它们合并到一个物体中。我想要的JsonPath是可能的还是这是JsonPath的限制?
答案 0 :(得分:0)
假设您对IE(它的ES6)的填充没有问题,请使用Object.assign:
const object1 = {
a: 1,
b: 2,
c: 3
};
const object2 = {
d: 4
}
const objectMerged = Object.assign({}, object1, object2);
console.log(objectMerged.c);
console.log(objectMerged.d);
答案 1 :(得分:0)
我认为执行此操作的适当方法是删除第二个对象,并将它们之间的差异应用于第一个对象:
[
{ "op": "remove", "path": "/1" },
{ "op": "add", "path": "/0/d", "value": 4 }
]