首页 > 解决方案 > 更改特定字段的 JSON 数据的值和类型

问题描述

用于持久性的 POJO 类

class Target{
private Integer status;
private Integer autoLink;
// other fields

}

输入Json格式

Target
{
"status":"Executed",
"autoLinkIndicator":"YES"
//other fields
}

如何在持久化之前解析 JSON 并更改字段的值?

例如:

如果我看到“状态”:“已执行”,

我想把它改成 "status":1 和 "status":"Terminated" -> "status":0

同样,对于“autoLinkIndicator”

1 表示“是”,0 表示“否”

目前,使用 gson 将 json 解析为 Target 类。

标签: javajsongsonjson-deserialization

解决方案


我希望以下内容有所帮助 - 没有类的简单解析器,您可以编辑值并传递给持久层

import java.io.FileReader; 
import java.util.Iterator; 
import java.util.Map; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.*; 

public class JSONReadExample  
{ 
    public static void main(String[] args) throws Exception  
    { 

        Object obj = new JSONParser().parse(new FileReader(<<<<Ur JSON>>>>));
        // typecasting obj to JSONObject 
        JSONObject jsonObj = (JSONObject) obj; 
        // getting status and autoLinkIndicator
        String status = (String) jo.get("status"); 
        String autoLinkIndicator  = (String) jo.get("autoLinkIndicator");        
        System.out.println(status);; 
        System.out.println(autoLinkIndicator); 

    //Code logic to alter the values and then persist
    }
}

推荐阅读