当前位置: 首页 > 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);}}}
    }
    
http://www.lryc.cn/news/439582.html

相关文章:

  • 2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示
  • ARACom Proxy Class API 概念
  • 【Scala入门学习】基本数据类型和变量声明
  • C#基础(13)结构体
  • Excel图片批量插入单元格排版处理插件【图片大师】
  • 应用性能优化实践(二)提升应用启动和响应速度
  • 接口测试系列文章专题
  • Unity Hub自动安装指定版本Unity的Android开发环境
  • 从0开始学ARM
  • 每日一题——第九十四题
  • Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
  • 后续学习规划 ----含我个人的学习路线,经历及感受
  • Skytower
  • 成型的程序
  • 卡尔曼滤波中Q和R与噪声的关系
  • sicp每日一题[2.10]
  • MCN跨国企业如何从0到1搭建ITSM运维体系
  • 【C++入门学习】7. 类型
  • 视频服务器:GB28181网络视频协议
  • vue3 一次二次封装element-plus组件引发的思考
  • [Web安全 网络安全]-文件读取与下载漏洞
  • 2024.9.12(k8s环境搭建2)
  • Redis 字典的哈希函数和 rehash 操作详解
  • 汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用
  • Halo 开发者指南——项目运行、构建
  • 【C++】——list
  • 07_Python数据类型_集合
  • 结合人工智能,大数据,物联网等主流技术实现业务流程的闭环整合的名厨亮灶开源了
  • vue环境搭建相关介绍
  • MyBatis系统学习(四)——MyBatis的关联映射和缓存机制