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 概述 生成方式:Proxy Class 是从 AutoSar 元模型的服务接口描述中生成的,ara::com 标准化了其接口,AP 产品供应商的工具链会生成实现该接口的代理实现类。 命名空间:ara::com 期望代理相关的工件在命名空间 “pro…...
【Scala入门学习】基本数据类型和变量声明
1. 基本数据类型 scala 的基本类型有 9种: Byte、Char、Short、Int、Long、Float、Double、Boolean、Unit Scala中没有基本数据类型的概念,所有的类型都是对象。 AnyVal:代表所有基本类型。 AnyRef:代表所以引用类型ÿ…...
C#基础(13)结构体
前言 随着函数的讲解完成,我想你已经初步有了写一些复杂逻辑功能的能力,但是我们会发现其实在我们大部分实际开发情况中,很多我们需要写的变量可能不只有一个属性。 他可能有很多变量,那这时候我们如果要把这些变量集中到一个东…...
Excel图片批量插入单元格排版处理插件【图片大师】
为了方便大家在图片的插入排版的重复工作中解放出来,最近发布了一款批量插入图片的插件,欢迎大家下载,免费试用。 这是图片的文件夹: 主要功能如下: 1,匹配单元格名称的多张图批量插入到一个单元格 该功能支持设置图…...
应用性能优化实践(二)提升应用启动和响应速度
一、提升应用启动和响应速度的方法 1、冷启动过程简介 应用启动时,后台无该应用的进程,需要创建新的进程,这种启动方式叫冷启动。 2、使用异步加载 使用异步加载可以在后台线程中处理耗时操作,从而提升应用响应速度。 3、延迟加载…...
接口测试系列文章专题
在你眼中什么是接口 HTTP协议 什么是接口测试 接口测试之工具 fiddler工具的原理 fiddler工具界面详解 fiddler工具的基本使用 fiddler使如何对手机app进行抓包的呢 fiddler手机app抓包教程 Charles自定义接口返回的数据内容 常用接口工具postman的基本使用方式 pos…...
Unity Hub自动安装指定版本Unity的Android开发环境
Unity开发Android环境要求SDK、DNK、JDK、Gradle版本都要对才能发布APK,自己去配置很容易出错。Unity Hub可以自动安装指定版本Unity的Android开发环境。 1.安装国内用的UnityHub(我这里用的3.3.2-c6) 2.找到对应的Unity版本 3.点击【从Unit…...
从0开始学ARM
1. ARM模式和寄存器 1.1 ARM处理器工作模式 Cortex系列之前的ARM处理器工作模式一共有7种。 1.1.1 工作模式 Cortex系列的ARM处理器工作模式有8种,多了1个monitor模式,如下图所示: ARM之所以设计出这么多种模式出来,就是为了…...
每日一题——第九十四题
// SortNumInFile.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。 // 题目:将一个文本文件number.txt中的数字按照从小到大排列后,重新写入到该文件中,要求排序前和排序后都输出该文件的内容。该文件中共有20个整数…...
Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
目录 一、Linux软件包管理器 - yum(ubuntu用apt代替yum)1、Linux下安装软件的方式2、认识 yum3、查找软件包4、安装软件5、如何实现本地机器和云服务器之间的文件互传 二、Linux编辑器 - vim1、vim 的基本概念2、vim 下各模式的切换3、vim 命令模式各命令…...
后续学习规划 ----含我个人的学习路线,经历及感受
目前的基础 开发相关(最重要) 1.Java SE 从入门到起飞 2.Java Web开发 3.苍穹外卖 以上三个是和开发相关的基础。 我是按照书写的顺序学习的,有需要的朋友可以参考。 计算机相关 其他的话,都是比较久远的了。隔得时间一年半…...
Skytower
一、安装配置靶机 下载地址: SkyTower: 1 ~ VulnHub 下载之后解压发现是VirtualBox格式的 我们下载一个VirtualBox,这是官网 Downloads – Oracle VirtualBox 安装到默认路径就 打开后点击注册 选择解压后的vbox文件 然后点击左上角管理 点击导出虚拟电脑&…...
成型的程序
加一个提示信息 加上python 常用的包 整个程序打包完 250M 安装 960MB matplot numpy pandas scapy pysearial 常用的包 (pyvisa)… … 啥都有 Python 解释器组件构建 要比 lua 容易的多 (C/Rust 的组件库)...
卡尔曼滤波中Q和R与噪声的关系
卡尔曼滤波 一种用于估计系统状态的递归滤波器,通过融合传感器测量和系统模型,提供系统状态的最优估计。 Q和R是什么 在卡尔曼滤波中,Q和R分别表示过程噪声和测量噪声的协方差矩阵。 Q Q Q矩阵(过程噪声协方差矩阵)…...
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运维体系,即信息技术运维管理体系,是指企业为了保障IT基础设施和业务系统的稳定、高效、安全运行,所建立的一系列管理流程、规范、工具和组织的总称。其核心目标是通过对IT资源的集中管理和服务&#x…...
【C++入门学习】7. 类型
基本类型 修饰符类型 基本类型 类型关键字布尔型bool字符型char整型int浮点型float双浮点型double无类型void宽字符型wchar_t 字符型char只占八位,存储ascii码的,而宽字符型是为了存储多国语言的代码unicode。 // 宽字符型的定义 typedef short int …...
视频服务器:GB28181网络视频协议
一、前言 某项目中需要集成视频管理平台,实现分布在各省公司的摄像及接入,对视频进行统一管理。本项目中视频管理平台采用GB/T28181实现的监控设备接入管理平台,支持在开放互联网和局域网对监控设备进行远程接入、远程管理、远程调阅、录像回…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
