詳解springboot如何更新json串里面的內(nèi)容
我的需求是這樣的
- 如果新字符串中的key在原字符串中存在,則更新原字符串的對(duì)應(yīng)key的value。
- 如果新字符串中的key在原字符串中不存在,則將新字符串中的key和value添加到原字符串中。
- 如果原字符串中存在,新字符串中不存在的key,則不處理
話不多說(shuō) 上代碼
public class UpdateColumnJsonUtils {
public static void main(String[] args) {
String jsonString = "{\n" +
" \"scriptResult\": {\n" +
" \"loan_app_count\": 3,\n" +
" \"app_num_ratio_3\": 0.8,\n" +
" \"gender_data\": {\n" +
" \"a\":\"1\",\n" +
" \"c\":\"3\"\n" +
" }\n" +
" }\n" +
"}";
String newJsonString = "{\n" +
" \"scriptResult\": {\n" +
" \"loan_app_count\": 5,\n" +
" \"app_num_ratio_4\": 1,\n" +
" \"gender_data\": {\n" +
" \"a\":\"1\",\n" +
" \"b\":\"2\",\n" +
" \"d\":\"4\",\n" +
" \"e\":\"d5\"\n" +
" }\n" +
" }\n" +
"}";
System.out.println(getColumnJson(jsonString,newJsonString));
}
public static Map<String,Object> getColumnJson(String oldJsonString,String newJsonString) {
// 將原始的JSON字符串轉(zhuǎn)換為JSONObject
JSONObject originalJsonObject = JSON.parseObject(oldJsonString);
JSONObject newJsonObject = JSON.parseObject(newJsonString);
// 更新原始JSON對(duì)象中的對(duì)應(yīng)鍵值對(duì)
updateJsonObject(originalJsonObject, newJsonObject);
// 將更新后的JSONObject轉(zhuǎn)換回JSON字符串
Map<String,Object> map = originalJsonObject.getInnerMap();
return map;
}
private static void updateJsonObject(JSONObject originalObject, JSONObject newObject) {
for (String key : newObject.keySet()) {
Object newValue = newObject.get(key);
Object oldValue = originalObject.get(key);
if (oldValue instanceof JSONObject && newValue instanceof JSONObject) {
// 如果新舊值都是JSONObject,則遞歸更新嵌套的JSON對(duì)象
updateJsonObject((JSONObject) oldValue, (JSONObject) newValue);
} else {
// 否則,直接更新對(duì)應(yīng)鍵的值
originalObject.put(key, newValue);
}
}
}
}結(jié)果:

{scriptResult={"loan_app_count":5,"gender_data":{"a":"1","b":"2","c":"3","d":"4","e":"d5"},"app_num_ratio_4":1,"app_num_ratio_3":0.8}}到此這篇關(guān)于詳解springboot如何更新json串里面的內(nèi)容的文章就介紹到這了,更多相關(guān)springboot更新json串內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
eclipse創(chuàng)建多層包(多級(jí)包)全過(guò)程
這篇文章主要介紹了eclipse創(chuàng)建多層包(多級(jí)包)全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Springboot與Maven多環(huán)境配置的解決方案
多環(huán)境配置的解決方案有很多,我看到不少項(xiàng)目的多環(huán)境配置都是使用Maven來(lái)實(shí)現(xiàn)的,本文就實(shí)現(xiàn)Springboot與Maven多環(huán)境配置,感興趣的可以了解下2021-06-06
Spring Data JPA中 in 條件參數(shù)的傳遞方式
這篇文章主要介紹了Spring Data JPA中 in 條件參數(shù)的傳遞方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
如何通過(guò)Java生成一個(gè)隨機(jī)數(shù)
當(dāng)我們需要在Java中生成隨機(jī)數(shù)時(shí),可以借助JDK中提供的Random類來(lái)實(shí)現(xiàn),通過(guò)使用Random類,我們可以輕松地生成各種類型的隨機(jī)數(shù),下面我們就來(lái)看看如何利用Random類生成隨機(jī)數(shù)吧2023-09-09
SpringBoot+Thymeleaf實(shí)現(xiàn)生成PDF文檔
Thymeleaf是一個(gè)現(xiàn)代的服務(wù)器端?Java?模板引擎,適用于?Web?和獨(dú)立環(huán)境。Thymeleaf?的主要目標(biāo)是為您的開發(fā)工作流程帶來(lái)優(yōu)雅的自然模板,本文就來(lái)用它實(shí)現(xiàn)生成PDF,感興趣的可以了解一下2022-09-09

