Java使用JsonPatch
老规矩,概念的东西不再此处体现,baidu即可自行解决,直入主题,动手第一。
导入所需的jar文件
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<dependency>
<groupId>com.github.fge</groupId>
<artifactId>json-patch</artifactId>
<version>1.9</version>
</dependency>
</dependencies>
创建demo文件
JsonPatchDemo.java
package com.szl.demo.szldemo; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.fge.jsonpatch.JsonPatch; public class JsonPatchDemo { public static void main(String[] args) {
String origin = "{\"userName\":\"Captain America\", \"userAccount\":\"qweewq\", \"userPwd\":\"333777\"}";
String patch = "["
+ "{\"op\":\"replace\", \"path\":\"/userName\", \"value\":\"Ant Man\"},"
+ "{\"op\":\"add\", \"path\":\"/level\", \"value\":\"9\"},"
+ "{\"op\":\"replace\", \"path\":\"/userPwd\", \"value\":\"xxxxxx\"}"
+ "]";
String afterJson = patchApplication(origin, patch);
System.out.println(afterJson);
} /**
* @param origin 原JSON
* @param patch patch信息
* @return
*/
public static String patchApplication(String origin, String patch) {
try {
ObjectMapper objectMapper = new ObjectMapper();
// 将原json转为JsonNode
JsonNode originJson = objectMapper.readTree(origin);
// 将patch json转为 JsonNode
JsonNode patchJson = objectMapper.readTree(patch);
// 将patch形式的json转为 JsonPatch
JsonPatch patcher = JsonPatch.fromJson(patchJson); // patch应用替换原JSON
JsonNode afterJson = patcher.apply(originJson);
return afterJson.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
} }
是不是很简单,就是这么easy,以下是jsonPatch的官网,版本也在不断的更新,可以持续关注。
Java使用JsonPatch的更多相关文章
- json-patch 了解
What is JSON Patch? JSON Patch is a format for describing changes to a JSON document. It can be used ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
随机推荐
- 带有Q_OBJECT的类要放在头文件的第一个类位置,否则可能无法moc
如果头文件中有多个类,带有Q_OBJECT的类要放在头文件的第一个类位置,否则可能无法moc
- [LeetCode] 334. Increasing Triplet Subsequence 递增三元子序列
Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the ar ...
- 【C/C++开发】C++11:左值引用VS右值引用
左值引用VS右值引用 左值引用对于一般的C++程序员再熟悉不过,但对于右值引用(C++0X新特性),就稍微有点不知所云 左值VS右值 在定义变量的时候,经常会用到左值和右值,比如:int a = 1; ...
- DDD/CQRS模式,微服务,容器
DDD/CQRS模式,微服务,容器 https://docs.microsoft.com/zh-cn/previous-versions/msp-n-p/ee658109(v=pandp.10) We ...
- 实现一个java锁
AQS是实现java锁的核心,但是实现起来还是仅仅只需继承该类重写它的几个主要方法即可. 1.首先,定义一个同步类,继承AQS. //这里要有个Sync内部类,实现锁需要继承AQSprivate st ...
- 【转帖】HBase基本概念与基本使用
HBase基本概念与基本使用 https://www.cnblogs.com/swordfall/p/8737328.html 分类: HBase undefined 1. HBase简介 1.1 什 ...
- [转帖]rename(Perl语言版本) 详解
rename(Perl语言版本) 详解 2019-03-19 22:51:23 wayne17 阅读数 464更多 分类专栏: Ubuntu之路 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- 用easyui实现查询条件的后端传递并自动刷新表格的两种方法
用easyui实现查询条件的后端传递并自动刷新表格的两种方法 搜索框如下: 通过datagrid的load方法直接传递参数并自动刷新表格 通过ajax的post函数传递参数并通过loadData方法将 ...
- 用LabVIEW做声源定位系统
前一阵子,研发部举办了为期三天的第一届Innovation Day,让大家用3天时间去完成工作之外的一些创意.有人做微信小程序,有人继续研究一些工作中用到的Tool,有人把一直想解决而没时间解决的老b ...
- 构建helm chart应用
使用helm命令创建基础目录 helm create t2cp [root@node04 ~]# tree t2cp t2cp ├── charts ├── Chart.yaml ├── templa ...