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的官網,版本也在不斷的更新,可以持續關注。

http://jsonpatch.com/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM