当前位置: 首页 > 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.mrgr.cn/news/28490.html

相关文章:

  • ZooKeeper单机、集群模式搭建教程
  • Cellebrite VS IOS18Rebooting
  • H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因
  • Gin 框架入门(GO)-1
  • NoETL
  • 图像处理实验四(Adaptive Filter)
  • 如何设置xshell关闭最后一个选项卡标签时不退出软件?
  • 读构建可扩展分布式系统:方法与实践06异步消息传递
  • python多进程程序设计 之四
  • protobuf.js:Message类功能详解与实战应用
  • n位格雷码
  • C语言 | Leetcode C语言题解之第412题Fizz Buzz
  • ls -l是什么命令全称?
  • 高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)
  • 408算法题leetcode--第六天
  • NISP 一级 | 5.5 账户口令安全
  • 刷题日记【160. 相交链表】
  • 2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示
  • cp 命令是用来复制文件或目录的
  • 基于springboot+vue+uniapp的驾校报名小程序
  • 代码随想录冲冲冲 Day47 单调栈Part1
  • Navicat使用 笔记04
  • R语言统计分析——散点图1(常规图)
  • 使用Qt 搭建简单雷达
  • SpringBoot 消息队列RabbitMQ使用延迟消息插件 接收延迟消息
  • Django学习实战篇五(适合略有基础的新手小白学习)(从0开发项目)