詳解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ù)(java運(yùn)行參數(shù))
這篇文章主要介紹了java顯示當(dāng)前運(yùn)行時參數(shù)的示例(java運(yùn)行參數(shù)),需要的朋友可以參考下2014-04-04SpringBoot對接twilio實現(xiàn)郵件信息發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何對接twilio實現(xiàn)郵件信息發(fā)送功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03Spring Boot中的SpringSecurity基礎(chǔ)教程
Spring Security是一個功能強(qiáng)大且高度可定制的身份驗證和訪問控制框架。它實際上是保護(hù)基于spring的應(yīng)用程序的標(biāo)準(zhǔn)Spring Security是一個框架,側(cè)重于為Java應(yīng)用程序提供身份驗證和授權(quán),這篇文章主要介紹了Spring Boot中的SpringSecurity學(xué)習(xí),需要的朋友可以參考下2023-01-01mybatis-config.xml文件中的mappers標(biāo)簽使用
在MyBatis配置中,<mapper>標(biāo)簽關(guān)鍵用于指定SQL?Mapper的XML文件路徑,主要有三種指定方式:resource、url和class,Resource方式從類的根路徑開始,適合放在項目內(nèi)部保障移植性,URL方式指定絕對路徑,移植性差,適用于外部路徑2024-10-10IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門)
這篇文章主要介紹了IntelliJ IDEA安裝目錄和設(shè)置目錄的說明(IntelliJ IDEA快速入門),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04