JSON Merge Patch && JSON PATH

一 JSON Merge Patch

Json Merge Patch 描述了如何修改目标JSON 文档的一种格式,即如果被提供的merge patch 中存在目标文档中不存在的成员,则该成员将会新加;如果被提供的成员与目标成员都存在则做替换修改;在Merge Patch 中的null值意味着删除目标中该对象,

示例1如下:

目标文档

json 复制代码
{
     "a": "b",
     "c": {
       "d": "e",
       "f": "g"
     }
  }

merge patch 用于改变a的值,删除f,

json 复制代码
PATCH /target HTTP/1.1
Host: example.org
Content-Type: application/merge-patch+json

   {
     "a":"z",
     "c": {
       "f": null
     }
   }

示例2如下:

目标json文档

json 复制代码
{
     "title": "Goodbye!",
     "author" : {
       "givenName" : "John",
       "familyName" : "Doe"
     },
     "tags":[ "example", "sample" ],
     "content": "This will be unchanged"
   }

merge patch

一个用户想要更改title的值,新加phoneNumber成员、content成员,删除givenName成员,修改tags的值,就可以发送以下请求

json 复制代码
PATCH /my/resource HTTP/1.1
Host: example.org
Content-Type: application/merge-patch+json

   {
     "title": "Hello!",
     "phoneNumber": "+01-123-456-7890",
     "author": {
       "familyName": null
     },
     "tags": [ "example" ]
   }

最终结果

json 复制代码
{
     "title": "Hello!",
     "author" : {
       "givenName" : "John"
     },
     "tags": [ "example" ],
     "content": "This will be unchanged",
     "phoneNumber": "+01-123-456-7890"
   }

总结

Merge Patch Format 一般会使用HTTP协议中的PATCH方法进行发送请求,并且其 Content-Type类型为 application/merge-patch+json

二 JSON PATH

JSON是数据结构化存储常用的数据格式,HTTP协议在原有的方法基础上,扩展出了PATCH方法,该方法使用JOSN PATCH格式的语法对数据进行加工。JSON PATCH格式的HTTP PATCH请求示例如下

json 复制代码
   PATCH /my/data HTTP/1.1
   Host: example.org
   Content-Length: 326
   Content-Type: application/json-patch+json
   If-Match: "abc123"

   [
     { "op": "test", "path": "/a/b/c", "value": "foo" },
     { "op": "remove", "path": "/a/b/c" },
     { "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] },
     { "op": "replace", "path": "/a/b/c", "value": 42 },
     { "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
     { "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
   ]

从上述可以看出该方式对应的Content-Type是application/json-patch+json;该语法格式中有三个重要的概念op、path、value;

其中op 必须是 "add", "remove", "replace", "move", "copy", "test"中的其中一个,其他值是非法的。

1、op的简单介绍

  • add
    如果目标数据结构中,有对应key值,则将对应的value值,插入目标值列表中;如果无对应的key值,则新增一个key-value成员;
    == 新加一个对象成员==
    目标JSON document
json 复制代码
   { "foo": "bar"}

JSON Patch document:

json 复制代码
   [
     { "op": "add", "path": "/baz", "value": "qux" }
   ]

结果 JSON document:

json 复制代码
   {
     "baz": "qux",
     "foo": "bar"
   }
  • remove
    ... ...

三 Merge含义简单介绍

对于merge动作来说,一般情况下key值如果相同,则替换更改对应的值;如果key不存在则新增key成员,类似于JSON Merge Patch,但是在不同设计场景中又有所不同

相关推荐
esmember3 小时前
电路研究9.2.6——合宙Air780EP中HTTP——HTTP GET 相关命令使用方法研究
网络·网络协议·http·at指令
霸王蟹9 小时前
http和https的区别?
网络·笔记·网络协议·学习·http·https
精通HelloWorld!9 小时前
使用HttpClient和HttpRequest发送HTTP请求
java·spring boot·网络协议·spring·http
泪不是Web妳而流10 小时前
BurpSuite抓包与HTTP基础
网络·经验分享·网络协议·安全·http·网络安全·学习方法
zhuyasen11 小时前
多维度详细比较 kratos、go-zero、goframe、sponge 框架
后端·http·微服务·rpc·golang
ybq1951334543112 小时前
javaEE-6.网络原理-http
网络·网络协议·http
我的青春不太冷14 小时前
《深入理解HTTP交互与数据监控:完整流程与优化实践》
网络·经验分享·科技·网络协议·学习·http·架构
A.sir啊15 小时前
爬虫基础(五)爬虫基本原理
网络·爬虫·python·网络协议·http·pycharm
高野4401 天前
【网络】3.HTTP(讲解HTTP协议和写HTTP服务)
网络·http·iphone
codkingo1 天前
CSRF 跨站请求伪造漏洞
web安全·http·网络安全·csrf