本文主要是介绍JSONPatch | FastJson之JSONPatch使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、介绍
- JSON Patch是一种描述JSON文档更改的格式。
- 当只更改了一部分时,可用于避免发送整个文档,当与HTTP PATCH方法结合使用时,它允许以符合标准的方式对HTTP API进行部分更新。
- JSON Patch本身就是JSON文档。
- 在fastjson 1.2.71版本后,支持JSONPatch ( http://jsonpatch.com/ ).
二、为什么使用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"]
}
四、API
package com.alibaba.fastjson;public class JSONPatch {public static String apply(String original, String patch);public static Object apply(Object object, String patch);
}
五、DEMO
JSONPatch执行了三个操作:
- replace:将key为"baz"的值"qux"替换为"boo"
- add:添加JSON对象(key为"hello",value为"world")
- remove:删除了JSON对象(key为"foo")
String original = "{\n" +" \"baz\": \"qux\",\n" +" \"foo\": \"bar\"\n" +"}";String patch = "[\n" +" { \"op\": \"replace\", \"path\": \"/baz\", \"value\": \"boo\" },\n" +" { \"op\": \"add\", \"path\": \"/hello\", \"value\": [\"world\"] },\n" +" { \"op\": \"remove\", \"path\": \"/foo\" }\n" +"]";String result = JSONPatch.apply(original, patch);
assertEquals("{\"baz\":\"boo\",\"hello\":[\"world\"]}", result);
参考资料:
FastJSON的JSONPatch介绍:https://github.com/alibaba/fastjson/wiki/jsonpatch
这篇关于JSONPatch | FastJson之JSONPatch使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!