使用JSONPATH组合两个对象



假设我有这样的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的限制吗?

我认为这样做的适当方法是删除第二个对象并将它们之间的差异应用于第一个对象:

[
  { "op": "remove", "path": "/1" },
  { "op": "add", "path": "/0/d", "value": 4 }
] 

假设您对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);

有关详细信息,请参见https://developer.mozilla.org/en-us/docs/web/javascript/reference/reference/global_objects/objects/absign/assign#browser_compatibility

最新更新