当前位置: 首页 > news >正文

JSON处理工具类

JSON处理工具类

  • import org.json.JSONArray;
    import org.json.JSONObject;import java.util.ArrayList;
    import java.util.List;/*** JSON处理工具类*/
    public class JsonUtils {/****将json字符串转为map* @param json* @return java.util.Map<java.lang.String, java.lang.Object>**/public static Map<String, Object> jsonToMap(String json) {if (StringUtils.isBlank(json)){return null;}ObjectMapper objectMapper = new ObjectMapper();Map<String, Object> map = null;try {map = objectMapper.readValue(json, new TypeReference<Map<String, Object>>() {});} catch (JsonProcessingException e) {e.printStackTrace();}return map;}/****json格式字符串转换为List<Map<String, Object>>* @param json* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>* @author yinqi* @create 2024/2/1 9:36**/public static List<Map<String, Object>> jsonToList(String json) {if (StringUtils.isBlank(json)){return null;}ObjectMapper objectMapper = new ObjectMapper();List<Map<String, Object>> list = null;try {list = objectMapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {});} catch (JsonProcessingException e) {System.err.println(e.getMessage());}return list;}/*** 将JSON字符串转换为JSONObject对象** @param json JSON字符串* @return 转换后的JSONObject对象*/public static JSONObject stringToJson(String json) {return new JSONObject(json);}/*** 将JSONObject对象转换为JSON字符串** @param jsonObject JSONObject对象* @return 转换后的JSON字符串*/public static String jsonToString(JSONObject jsonObject) {return jsonObject.toString();}/*** 获取JSONObject中指定字段的字符串值** @param jsonObject JSONObject对象* @param key        字段名* @return 字段对应的字符串值,若字段不存在则返回空字符串*/public static String getString(JSONObject jsonObject, String key) {return jsonObject.optString(key, "");}/*** 获取JSONObject中指定字段的整数值** @param jsonObject JSONObject对象* @param key        字段名* @return 字段对应的整数值,若字段不存在或无法转换为整数时返回0*/public static int getInt(JSONObject jsonObject, String key) {return jsonObject.optInt(key, 0);}/*** 获取JSONObject中指定字段的布尔值** @param jsonObject JSONObject对象* @param key        字段名* @return 字段对应的布尔值,若字段不存在或无法转换为布尔值时返回false*/public static boolean getBoolean(JSONObject jsonObject, String key) {return jsonObject.optBoolean(key, false);}/*** 获取JSONObject中指定字段的JSONObject对象** @param jsonObject JSONObject对象* @param key        字段名* @return 字段对应的JSONObject对象,若字段不存在或无法转换为JSONObject对象时返回null*/public static JSONObject getJSONObject(JSONObject jsonObject, String key) {return jsonObject.optJSONObject(key);}/*** 获取JSONObject中指定字段的JSONArray对象** @param jsonObject JSONObject对象* @param key        字段名* @return 字段对应的JSONArray对象,若字段不存在或无法转换为JSONArray对象时返回null*/public static JSONArray getJSONArray(JSONObject jsonObject, String key) {return jsonObject.optJSONArray(key);}/*** 将对象转换为JSONObject对象** @param obj 对象* @return 转换后的JSONObject对象*/public static JSONObject objectToJson(Object obj) {return new JSONObject(obj);}/*** 将JSON字符串转换为JSONArray对象** @param json JSON字符串* @return 转换后的JSONArray对象,若转换失败则返回null*/public static JSONArray stringToJsonArray(String json) {try {return new JSONArray(json);} catch (Exception e) {e.printStackTrace();return null;}}/*** 将JSONArray对象转换为JSON字符串** @param jsonArray JSONArray对象* @return 转换后的JSON字符串*/public static String jsonArrayToString(JSONArray jsonArray) {return jsonArray.toString();}/*** 将JSONArray对象转换为指定类型的List集合** @param jsonArray JSONArray对象* @param clazz     List集合的元素类型* @return 转换后的List集合*/public static <T> List<T> jsonArrayToList(JSONArray jsonArray, Class<T> clazz) {List<T> list = new ArrayList<>();for (int i = 0; i < jsonArray.length(); i++) {T item = null;try {item = clazz.newInstance();if (item instanceof JSONObject) {list.add((T) jsonArray.getJSONObject(i));} else {list.add((T) jsonArray.get(i));}} catch (Exception e) {e.printStackTrace();}}return list;}/*** 将List集合转换为JSONArray对象** @param list List集合* @return 转换后的JSONArray对象*/public static JSONArray listToJsonArray(List<?> list) {JSONArray jsonArray = new JSONArray();for (Object obj : list) {jsonArray.put(objectToJson(obj));}return jsonArray;}/****将json字符串转换为对象集合* @param jsonString* @param valueType* @return java.util.List<T>**/public static <T> List<T> jsonToList(String jsonString, Class<T> valueType) throws IOException {if (StringUtils.isBlank(jsonString)){return null;}ObjectMapper objectMapper = new ObjectMapper();return objectMapper.readValue(jsonString, objectMapper.getTypeFactory().constructCollectionType(List.class, valueType));}/****将json字符串中的旧字符串替换成新字符串* @param jsonString json字符串* @param oldString 旧字符串* @param newString 新字符串* @return java.lang.String**/public static String replaceStringInJson(String jsonString, String oldString, String newString) {try {// 将json字符串转换为JSONObject对象JSONObject json = new JSONObject(jsonString);// 使用递归函数进行替换replaceStringInJson(json, oldString, newString);// 返回更新后的json字符串return json.toString();} catch (JSONException e) {e.printStackTrace();}// 如果发生异常,则返回原始的json字符串return jsonString;}/****将json对象中的旧字符串替换成新字符串* @param object JSONObject或JSONArray* @param oldString 旧字符串* @param newString 新字符串* @return void**/public static void replaceStringInJson(Object object, String oldString, String newString) {if (object instanceof JSONObject) {JSONObject json = (JSONObject) object;// 遍历JSONObject的所有键for (String key : json.keySet()) {Object value = json.get(key);// 如果键对应的值是字符串类型,则尝试替换旧字符串为新字符串if (value instanceof String) {String oldValue = (String) value;String newValue = oldValue.replaceAll(oldString, newString);// 更新键对应的值为新字符串json.putOpt(key, newValue);}else {replaceStringInJson(value, oldString, newString);}}} else if (object instanceof JSONArray) {JSONArray jsonArray = (JSONArray) object;for (int i = 0; i < jsonArray.size(); i++) {Object value = jsonArray.get(i);replaceStringInJson(value, oldString, newString);}}}
    }
    

相关文章:

JSON处理工具类

JSON处理工具类 import org.json.JSONArray; import org.json.JSONObject;import java.util.ArrayList; import java.util.List;/*** JSON处理工具类*/ public class JsonUtils {/****将json字符串转为map* param json* return java.util.Map<java.lang.String, java.lang.O…...

2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示

目录 1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律数据预处理绘图热力图相关系数图百分比条形图箱线图小提琴图直方图KED图描述性统计分析偏度系数峰度系数其它统计量1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律 数据预处理 …...

ARACom Proxy Class API 概念

1. Proxy Class 概述 生成方式&#xff1a;Proxy Class 是从 AutoSar 元模型的服务接口描述中生成的&#xff0c;ara::com 标准化了其接口&#xff0c;AP 产品供应商的工具链会生成实现该接口的代理实现类。 命名空间&#xff1a;ara::com 期望代理相关的工件在命名空间 “pro…...

【Scala入门学习】基本数据类型和变量声明

1. 基本数据类型 scala 的基本类型有 9种&#xff1a; Byte、Char、Short、Int、Long、Float、Double、Boolean、Unit Scala中没有基本数据类型的概念&#xff0c;所有的类型都是对象。 AnyVal&#xff1a;代表所有基本类型。 AnyRef&#xff1a;代表所以引用类型&#xff…...

C#基础(13)结构体

前言 随着函数的讲解完成&#xff0c;我想你已经初步有了写一些复杂逻辑功能的能力&#xff0c;但是我们会发现其实在我们大部分实际开发情况中&#xff0c;很多我们需要写的变量可能不只有一个属性。 他可能有很多变量&#xff0c;那这时候我们如果要把这些变量集中到一个东…...

Excel图片批量插入单元格排版处理插件【图片大师】

为了方便大家在图片的插入排版的重复工作中解放出来&#xff0c;最近发布了一款批量插入图片的插件&#xff0c;欢迎大家下载&#xff0c;免费试用。 这是图片的文件夹&#xff1a; 主要功能如下: 1&#xff0c;匹配单元格名称的多张图批量插入到一个单元格 该功能支持设置图…...

应用性能优化实践(二)提升应用启动和响应速度

一、提升应用启动和响应速度的方法 1、冷启动过程简介 应用启动时&#xff0c;后台无该应用的进程&#xff0c;需要创建新的进程&#xff0c;这种启动方式叫冷启动。 2、使用异步加载 使用异步加载可以在后台线程中处理耗时操作&#xff0c;从而提升应用响应速度。 3、延迟加载…...

接口测试系列文章专题

在你眼中什么是接口 HTTP协议 什么是接口测试 接口测试之工具 fiddler工具的原理 fiddler工具界面详解 fiddler工具的基本使用 fiddler使如何对手机app进行抓包的呢 fiddler手机app抓包教程 Charles自定义接口返回的数据内容 常用接口工具postman的基本使用方式 pos…...

Unity Hub自动安装指定版本Unity的Android开发环境

Unity开发Android环境要求SDK、DNK、JDK、Gradle版本都要对才能发布APK&#xff0c;自己去配置很容易出错。Unity Hub可以自动安装指定版本Unity的Android开发环境。 1.安装国内用的UnityHub&#xff08;我这里用的3.3.2-c6&#xff09; 2.找到对应的Unity版本 3.点击【从Unit…...

从0开始学ARM

1. ARM模式和寄存器 1.1 ARM处理器工作模式 Cortex系列之前的ARM处理器工作模式一共有7种。 1.1.1 工作模式 Cortex系列的ARM处理器工作模式有8种&#xff0c;多了1个monitor模式&#xff0c;如下图所示&#xff1a; ARM之所以设计出这么多种模式出来&#xff0c;就是为了…...

每日一题——第九十四题

// SortNumInFile.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。 // 题目&#xff1a;将一个文本文件number.txt中的数字按照从小到大排列后&#xff0c;重新写入到该文件中&#xff0c;要求排序前和排序后都输出该文件的内容。该文件中共有20个整数&#xf…...

Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解

目录 一、Linux软件包管理器 - yum&#xff08;ubuntu用apt代替yum&#xff09;1、Linux下安装软件的方式2、认识 yum3、查找软件包4、安装软件5、如何实现本地机器和云服务器之间的文件互传 二、Linux编辑器 - vim1、vim 的基本概念2、vim 下各模式的切换3、vim 命令模式各命令…...

后续学习规划 ----含我个人的学习路线,经历及感受

目前的基础 开发相关&#xff08;最重要&#xff09; 1.Java SE 从入门到起飞 2.Java Web开发 3.苍穹外卖 以上三个是和开发相关的基础。 我是按照书写的顺序学习的&#xff0c;有需要的朋友可以参考。 计算机相关 其他的话&#xff0c;都是比较久远的了。隔得时间一年半…...

Skytower

一、安装配置靶机 下载地址: SkyTower: 1 ~ VulnHub 下载之后解压发现是VirtualBox格式的 我们下载一个VirtualBox&#xff0c;这是官网 Downloads – Oracle VirtualBox 安装到默认路径就 打开后点击注册 选择解压后的vbox文件 然后点击左上角管理 点击导出虚拟电脑&…...

成型的程序

加一个提示信息 加上python 常用的包 整个程序打包完 250M 安装 960MB matplot numpy pandas scapy pysearial 常用的包 (pyvisa)… … 啥都有 Python 解释器组件构建 要比 lua 容易的多 &#xff08;C/Rust 的组件库)...

卡尔曼滤波中Q和R与噪声的关系

卡尔曼滤波 一种用于估计系统状态的递归滤波器&#xff0c;通过融合传感器测量和系统模型&#xff0c;提供系统状态的最优估计。 Q和R是什么 在卡尔曼滤波中&#xff0c;Q和R分别表示过程噪声和测量噪声的协方差矩阵。 Q Q Q矩阵&#xff08;过程噪声协方差矩阵&#xff09;…...

sicp每日一题[2.10]

Exercise 2.10 Ben Bitdiddle, an expert systems programmer, looks over Alyssa’s shoulder and comments that it is not clear what it means to divide by an interval that spans zero. Modify Alyssa’s code to check for this condition and to signal an error if i…...

MCN跨国企业如何从0到1搭建ITSM运维体系

1. IT运维体系概述 1.1 定义与目标 IT运维体系&#xff0c;即信息技术运维管理体系&#xff0c;是指企业为了保障IT基础设施和业务系统的稳定、高效、安全运行&#xff0c;所建立的一系列管理流程、规范、工具和组织的总称。其核心目标是通过对IT资源的集中管理和服务&#x…...

【C++入门学习】7. 类型

基本类型 修饰符类型 基本类型 类型关键字布尔型bool字符型char整型int浮点型float双浮点型double无类型void宽字符型wchar_t 字符型char只占八位&#xff0c;存储ascii码的&#xff0c;而宽字符型是为了存储多国语言的代码unicode。 // 宽字符型的定义 typedef short int …...

视频服务器:GB28181网络视频协议

一、前言 某项目中需要集成视频管理平台&#xff0c;实现分布在各省公司的摄像及接入&#xff0c;对视频进行统一管理。本项目中视频管理平台采用GB/T28181实现的监控设备接入管理平台&#xff0c;支持在开放互联网和局域网对监控设备进行远程接入、远程管理、远程调阅、录像回…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...