-1

我有一个很大的 JSON,我想保留它并进行一些更改。如何在不描述每个属性的情况下使用 JSONata 来做到这一点。

我希望拥有所有已经存在的属性的运算符,我只需要添加覆盖。

例如

{
   $takeall,
   "name": title //changes
   "area": width * height
}

有什么办法吗?

4

1 回答 1

0

我相信您正在寻找的是Transform Operator

从 JSONata 文档:

... ~> | ... | ... | (变换)
对象变换运算符用于使用模式/动作语法修改对象结构的副本,以针对特定修改,同时保持结构的其余部分不变。
语法具有以下结构:

头~> | 位置 | 更新 [, 删除] |

假设您的对象看起来像这样:

{
  "width": 5,
  "height": 5,
  "someOtherProps": "something",
  "title": "MyOlditle"
}

您可以使用转换运算符运行此示例查询:

$ ~> | $ | {
    "area": width * height,
    "title": "myNewTitle"
}, ["height", "width"] | 

生产:

/** "someOtherProps" carried over from original object. **/
/** "height" and "width" removed after calculation. **/
{
  "someOtherProps": "something",
  "title": "myNewTitle",
  "area": 25
}

工作示例:https ://try.jsonata.org/dLm34sftc

于 2021-11-29T17:56:20.180 回答