当前位置:首页 >  开发者 >  JSONPatch使用

JSONPatch使用

介绍:JSONPatch是一种描述JSON文档更改的格式。当只更改了一部分时,可用于避免发送整个文档。当与HTTPPATCH方法结合使用时,它允许以符合标准的方式对HTTPAPI进行部分更新。JSONPatch本身就是JSON文

介绍:

JSON Patch是一种描述JSON文档更改的格式。当只更改了一部分时,可用于避免发送整个文档。当与HTTP PATCH方法结合使用时,它允许以符合标准的方式对HTTP API进行部分更新。
JSON Patch本身就是JSON文档。

为什么使用JsonPatch:

JSON Patch的一大优势在于它的请求操作体很小,只发送对象的更改内容。相对要谨慎一点,只更新请求的内容。

比较常见有四大操作:

Add 向 JSON 对象中添加一对 key - value,或者向 Json Array 中加个元素。
Move 把某个节点从一个地方移到另一个地方。
Replace 替换,比如把 city 的值从“广州”改为“珠海”。
Remove 删除 JSON 对象中的某对 key - value,或者从 Json Array 中删除一个元素。
copy 复制,将值从JSON文档中的一个位置复制到另一个位置。这两个from和path是JSON指针。操作:{ "op": "copy", "from": "/biscuits/0", "path": "/best_biscuit" }
test 测试是否在文档中设置了指定的值。如果测试失败,则整个补丁都不适用。{ "op": "test", "path": "/best_biscuit/name", "value": "Choco Leibniz" }

简单的例子

原始文件
{
  "baz": "qux",
  "foo": "bar"
}
补丁
[
  { "op": "replace", "path": "/baz", "value": "boo" },
  { "op": "add", "path": "/hello", "value": ["world"] },
  { "op": "remove", "path": "/foo" }
]
结果
{
  "baz": "boo",
  "hello": ["world"]
}

ASP.NET Core案例

添加nuGet包:Microsoft.AspNetCore.JsonPatch
服务器端:

[HttpPost("/Orders/PostTest")]
        public Dictionary PostTest(
         [FromBody]JsonPatchDocument> body
         )
        {
            Dictionary dict = new Dictionary { { "name", "fan" }, { "age", "18" } };
            body.ApplyTo(dict);
            return dict;
        }

public string GetTest(
         [FromBody]JsonPatchDocument body
         )
        {
            User u = new User();
            body.ApplyTo(u);
            return "true";
        }

客户端:

HttpClient client = new HttpClient();
            string responseText = client.PostAsync("http://localhost:7777/webapi/a1/orders/posttest", "[{\"op\" : \"replace\",\"path\" : \"/name\",\"value\" : \"fanfan\"},{\"op\" : \"add\",\"path\" : \"/class\",\"value\" : \"333\"}]", null,Encoding.UTF8).Result;

//

返回结果:

{
  "name": "fanfan",
  "age": "18",
  "class": "333"
}

就是如果你的 JSON Patch 文档的 TModel 是一个类,由于 .NET 是面向对象的,你不能随便向一个类添加属性,因此,add 操作对于类是不可行的,但你可以进行 replace 操作

参考:
https://www.cnblogs.com/tcjiaan/p/9034869.html
http://jsonpatch.com/

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,
如果涉及侵权请联系站长邮箱:support@yingtwo.com 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:none

相关推荐

最近更新

Java外包程序员的技术出路
Java外包程序员的技术出路

学习的两个目的:应付面试应付工作(解决问题)首...

初识设计模式-迭代器模式
初识设计模式-迭代器模式

简介迭代器设计模式(IteratorDesig...

用python实现猜数字游戏
用python实现猜数字游戏

实现思路电脑随机生成1~100的整数,让用户去...

感悟一二
感悟一二

很多年了(快4年了),这么过的生活没有什么希望...

调试Rotor:启动过程
调试Rotor:启动过程

引言:我已经深入一些书籍好长一段时间了,包括(...

在游戏框架中添加支持
在游戏框架中添加支持

正如我们所工作所使用的其它内容资源,通过允许它...

OpenGL多线程创建纹理,附加我的测试结果
OpenGL多线程创建纹理,附加我的测试结果

关于这个问题以前只知道多个线程不能同时使用一个...

【转】水效模拟
【转】水效模拟

RealisticWater,Real-tim...

fibonacci递归实现
fibonacci递归实现

fibonacci数列:1,1,2,3,5,8...