詳解springboot如何更新json串里面的內(nèi)容
我的需求是這樣的
- 如果新字符串中的key在原字符串中存在,則更新原字符串的對應(yīng)key的value。
- 如果新字符串中的key在原字符串中不存在,則將新字符串中的key和value添加到原字符串中。
- 如果原字符串中存在,新字符串中不存在的key,則不處理
話不多說 上代碼
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對象中的對應(yīng)鍵值對
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對象
updateJsonObject((JSONObject) oldValue, (JSONObject) newValue);
} else {
// 否則,直接更新對應(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java顯示當(dāng)前運(yùn)行時(shí)的參數(shù)(java運(yùn)行參數(shù))
這篇文章主要介紹了java顯示當(dāng)前運(yùn)行時(shí)參數(shù)的示例(java運(yùn)行參數(shù)),需要的朋友可以參考下2014-04-04
SpringBoot對接twilio實(shí)現(xiàn)郵件信息發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何對接twilio實(shí)現(xiàn)郵件信息發(fā)送功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
Spring Boot中的SpringSecurity基礎(chǔ)教程
Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架。它實(shí)際上是保護(hù)基于spring的應(yīng)用程序的標(biāo)準(zhǔn)Spring Security是一個(gè)框架,側(cè)重于為Java應(yīng)用程序提供身份驗(yàn)證和授權(quán),這篇文章主要介紹了Spring Boot中的SpringSecurity學(xué)習(xí),需要的朋友可以參考下2023-01-01
mybatis-config.xml文件中的mappers標(biāo)簽使用
在MyBatis配置中,<mapper>標(biāo)簽關(guān)鍵用于指定SQL?Mapper的XML文件路徑,主要有三種指定方式:resource、url和class,Resource方式從類的根路徑開始,適合放在項(xiàng)目內(nèi)部保障移植性,URL方式指定絕對路徑,移植性差,適用于外部路徑2024-10-10
詳解如何將springboot項(xiàng)目導(dǎo)出成war包
這篇文章主要介紹了詳解如何將springboot項(xiàng)目導(dǎo)出成war包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門)
這篇文章主要介紹了IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04

