在单个 JSON Patch 操作中向数组添加多个值?

Posted

技术标签:

【中文标题】在单个 JSON Patch 操作中向数组添加多个值?【英文标题】:Add multiple values to array in single JSON Patch operation? 【发布时间】:2020-05-08 00:36:24 【问题描述】:

我有一个这样的 json 对象:


    "content" : [
        
            "id" : 54
            "foo" : "bar"
        ,
        
            "id" : 43
            "foo" : "bar"
        ,
        
            "id" : 76
            "foo" : "bar"
        
    ]

如果我想将多个项目添加到内容数组(顺序无关紧要),我可以使用带有单行/操作的 json 补丁添加到它吗?

 "op": "add", "path": "/content/-", "value": [
        
            "id" : 34
            "foo" : "bar"
        ,
        
            "id" : 23
            "foo" : "bar"
        ,
        
            "id" : 87
            "foo" : "bar"
        
    ] 

或者我是否必须为每个要添加的对象添加一行?

编辑:要清楚我想追加,而不是替换内容。

【问题讨论】:

我感觉你不确定你想做什么。为什么不:``` "op":"add","path":"content":[] 或 "op":"add","path":"content": "values ": [] ``` 不会删除存储在那里的现有项目吗?需要明确的是,我想追加而不是替换。 【参考方案1】:

不幸的是,这似乎(还没有?)可能......正如 Json Patch 规范所述:

https://www.rfc-editor.org/rfc/rfc6902#section-4.1

“添加”操作执行以下功能之一,具体取决于目标位置引用的内容:

如果目标位置指定了数组索引,则为新值 插入到数组中指定索引处。

如果目标位置指定的对象成员不 已经存在,一个新成员被添加到对象中。

如果目标位置指定了一个对象成员 存在,则替换该成员的值。

【讨论】:

以上是关于在单个 JSON Patch 操作中向数组添加多个值?的主要内容,如果未能解决你的问题,请参考以下文章

在angular2中向FormGroup添加多个验证器

在 AngularJS 中向 Json 数组添加函数

在Postgres中向JSON对象添加元素

Jquery,在每个循环中向数组添加值

将单个xml节点作为数组转换为json

PHP试图在while循环中向数组添加值