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

news2024/11/18 12:27:32

我的需求是这样的

  • 如果新字符串中的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}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊买家号怎么评论?快速留评软件有哪些?

对于亚马逊买家留评&#xff0c;其实是很简单的&#xff0c;首先亚马逊买家号账号上找到你购买该产品的订单。可以点击页面上的“我的账户”或类似的链接&#xff0c;然后选择“我的订单”或“订单历史记录”。然后选择要评论的订单&#xff1a;在订单历史记录中&#xff0c;找…

CS5801电路设计|HDMI转EDP转接板方案|HDMI2.0转EDP数据采集卡方案

CS5801国产(北京集睿致远&#xff09;研发HDMI转DP/EDP(4K60)转换器方案芯片,其设计HDMI转EDP转接板方案电路&#xff1a; CS5801输入端可以是1080P、4K30、4K60HZ这三种规格,输出的接口可以是DP信号接口,或者是EDP信号接口,输入端HDMI由4路信号组成&#xff0c;支持1.62Gbps、…

openwrt rm500u ncm方式拨号步骤记录

1.进入设备页面 用户名&#xff1a;root 2.创建接口 3.配置接口 国内APN 信息 中国移动APN&#xff1a;CMNET 中国联通APN&#xff1a;3GNET 中国电信APN&#xff1a;CTNET 4.防火墙配置 5.点击Save&Apply 6.配置完成后重启设备。重新进入设备页面&#xff0c;可以看…

搭建一个Vue3+Ts+Vite项目

Vue3TsVite项目(目录篇)——如何从零到一搭建Vue3后台管理系统_从零开始搭建后台管理系统_礼貌而已的博客-CSDN博客

tomcat整体设计解析

&#x1f514;简介 简介从各个视角看tomcat tomcat是一个Servlet 容器&#xff1f;Servlet规范与tomcat实现整体架构 启动过程io处理 connector 架构io 和线程模型 业务处理 container 架构 tomcat的类加载Sprint Boot如何利用Tomcat加载Servlet&#xff1f;Tomcat如何支持异步…

Springboot+vue的应急救援物资管理系统,Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的应急救援物资管理系统&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的应急救援物资管理系统&#xff0c;采用M&#xff08;model&#xff09;V&…

mysql学习实践

这里写目录标题 查找重复数据查找重复数据的字段值以及重复的次数如果你只想查找重复数据&#xff0c;而不需要知道重复的次数&#xff0c;可以简化查询如下 根据某个字段查询重复的数据&#xff0c;并取id最大的那条数据&#xff08;用于商机列表展示&#xff09;将逗号分隔的…

SpringCloud溯源——从单体架构到微服务Microservices架构 分布式和微服务 为啥要用微服务

前言 单体架构好好的&#xff0c;为啥要用微服务呢&#xff1f;微服务究竟是啥&#xff0c;怎么来的&#xff0c;有啥优缺点&#xff0c;本篇博客尝试追根溯源&#xff0c;阐述单体应用到分布式&#xff0c;微服务的演变,微服务架构的定义及优缺点&#xff0c;厘清相关的概念。…

手摸手系列之批量修改MySQL数据库所有表中某些字段的类型

在迁移老项目的数据库时&#xff0c;使用Navicat Premium的数据传输功能同步了表结构和数据。但是&#xff0c;发现某些字段的数据类型出现了错误&#xff0c;例如&#xff0c;租户ID从Oracle的NUMBER类型变成了MySQL的decimal(10)&#xff0c;正确的应该是bigInt(20)。此外&am…

windows server 2012安装教程

虚拟机系列文章 VMware Workstation Player 17 免费下载安装教程 VMware Workstation 17 Pro 免费下载安装教程 windows server 2012安装教程 Ubuntu22.04.3安装教程 FTP服务器搭建 windows server 2012安装教程 虚拟机系列文章前言 前言 各位道友&#xff0c;大家好&#xf…

大型语言模型:RoBERTa — 一种鲁棒优化的 BERT 方法

一、介绍 BERT模型的出现导致了NLP的重大进展。BERT的架构源自Transformer&#xff0c;在各种下游任务上实现了最先进的结果&#xff1a;语言建模&#xff0c;下一句预测&#xff0c;问答&#xff0c;NER标记等。 大型语言模型&#xff1a;BERT — 来自变压器的双向编码器表示 …

Java反射(一)--- 类的实例化

文章目录 一、整理框架二、Java反射机制提供的功能三、反射相关的主要API四、相关代码&#xff1a;1.Person类2.反射之前&#xff0c;对于Person类的操作3.反射之后&#xff0c;对于Person类的操作 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、整…

数据库 explain 关键字解析

目录 1. explain 概述 2. explain 关键字的使用方式 3. explain 的版本迭代 4. explain 只分析SQL语句&#xff0c;不执行SQL语句 5. explain 输出结果中各个字段的含义 6. type 表示检索表数据的方式 7. key_len表示使用的索引的长度 8. rows 表示预估读取到的行数 9…

2023年10月9日历史上的今天大事件早读

1740年10月09日红溪惨案 1874年10月09日万国邮政联盟成立 1912年10月09日第一次巴尔干战争爆发 1913年10月09日武昌起义元勋蒋翊武被害 1924年10月09日近代翻译家林纾(林琴南)逝世 1934年10月09日南斯拉夫国王遇刺身亡 1936年10月09日红军三大主力会师 1941年10月09日第…

瑜伽馆微信小程序怎么制作约课系统

在瑜伽馆微信小程序中&#xff0c;约课系统是一个重要的功能模块&#xff0c;可以帮助用户便捷地预约和取消预约瑜伽课程。下面将介绍如何制作一个约课系统&#xff0c;让瑜伽馆微信小程序更加完善。 一、确定约课系统的功能 在制作约课系统前&#xff0c;需要明确其功能和特点…

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…

Airtest自动化测试工具

一开始知道Airtest大概是在年初的时候&#xff0c;当时&#xff0c;看了一下官方的文档&#xff0c;大概是类似Sikuli的一个工具&#xff0c;主要用来做游戏自动化的&#xff0c;通过截图的方式用来解决游戏自动化测试的难题。最近&#xff0c;移动端测试的同事尝试用它的poco库…

彩虹商城全新SUP模板 知识付费模板 卡卡云模板源码

2023彩虹商城全新SUP模板 | 知识付费模板 | 卡卡云模板源码 图片&#xff1a;

如何更好的使用结构化工艺文件编制软件?——青创智通

青创智通结构化工艺文件编制软件包括文件创建、文件编制、文件修改、文件复制、文件引用、标准文件库、工艺路线、工艺资源库管理、审批管理、文件导出、文件清单汇总、接口管理等功能。具有以下优势及亮点。 1.集中工艺数据管理 以PLM系统平台为核心的结构化工艺数据支撑平台…

动画圆圈文字标志效果

效果展示 CSS 知识点 实现圆圈文字animation 属性回顾 实现思路 从效果的实现思路很简单&#xff0c;其实就是两个圆圈就可以实现。外层大圆&#xff08;灰色&#xff09;用于圆圈文字的展示&#xff0c;而内圆&#xff08;藏青色&#xff09;主要用于存放 Logo 图片。布局采…