详解springboot如何更新json串里面的内容

 更新时间:2023年10月12日 09:07:46   作者:潘小菲就是我昂  
这篇文章主要为大家介绍了springboot 如何更新json串里面的内容,文中有详细的解决方案供大家参考,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

我的需求是这样的

  • 如果新字符串中的key在原字符串中存在,则更新原字符串的对应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字符串转换为JSONObject
        JSONObject originalJsonObject = JSON.parseObject(oldJsonString);
        JSONObject newJsonObject = JSON.parseObject(newJsonString);
        // 更新原始JSON对象中的对应键值对
        updateJsonObject(originalJsonObject, newJsonObject);
        // 将更新后的JSONObject转换回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 {
                // 否则,直接更新对应键的值
                originalObject.put(key, newValue);
            }
        }
    }
}

结果:

{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}}

到此这篇关于详解springboot如何更新json串里面的内容的文章就介绍到这了,更多相关springboot更新json串内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • eclipse创建多层包(多级包)全过程

    eclipse创建多层包(多级包)全过程

    这篇文章主要介绍了eclipse创建多层包(多级包)全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Springboot与Maven多环境配置的解决方案

    Springboot与Maven多环境配置的解决方案

    多环境配置的解决方案有很多,我看到不少项目的多环境配置都是使用Maven来实现的,本文就实现Springboot与Maven多环境配置,感兴趣的可以了解下
    2021-06-06
  • Java使用注解和反射简化编程的方法示例

    Java使用注解和反射简化编程的方法示例

    这篇文章主要介绍了Java使用注解和反射简化编程的方法,结合实例形式分析了java使用注解和反射调用大量函数简化编程的相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • Spring Data JPA中 in 条件参数的传递方式

    Spring Data JPA中 in 条件参数的传递方式

    这篇文章主要介绍了Spring Data JPA中 in 条件参数的传递方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java并发工具类Phaser详解

    Java并发工具类Phaser详解

    这篇文章主要介绍了Java并发工具类Phaser详解,Phaser(阶段协同器)是一个Java实现的并发工具类,用于协调多个线程的执行,它提供了一些方便的方法来管理多个阶段的执行,可以让程序员灵活地控制线程的执行顺序和阶段性的执行,需要的朋友可以参考下
    2023-11-11
  • 如何通过Java生成一个随机数

    如何通过Java生成一个随机数

    当我们需要在Java中生成随机数时,可以借助JDK中提供的Random类来实现,通过使用Random类,我们可以轻松地生成各种类型的随机数,下面我们就来看看如何利用Random类生成随机数吧
    2023-09-09
  • SpringBoot+Thymeleaf实现生成PDF文档

    SpringBoot+Thymeleaf实现生成PDF文档

    Thymeleaf是一个现代的服务器端 Java 模板引擎,适用于 Web 和独立环境。Thymeleaf 的主要目标是为您的开发工作流程带来优雅的自然模板,本文就来用它实现生成PDF,感兴趣的可以了解一下
    2022-09-09
  • 改变JAVA窗体属性的操作方法

    改变JAVA窗体属性的操作方法

    在本篇内容里小编给大家详细分析了关于改变JAVA窗体属性的操作方法和步骤,需要的朋友们学习下。
    2018-12-12
  • Java I/O中I/O流的典型使用方式详解

    Java I/O中I/O流的典型使用方式详解

    这篇文章主要介绍了Java I/O中I/O流的典型使用方式详解,尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合。下面的例子可以作为典型的IO用法的基本参考,,需要的朋友可以参考下
    2019-06-06
  • Java中的@PreAuthorize注解使用详解

    Java中的@PreAuthorize注解使用详解

    这篇文章主要介绍了Java中的@PreAuthorize注解使用详解,@PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案,需要的朋友可以参考下
    2023-10-10

最新评论