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

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.kler.cn/news/307471.html

相关文章:

  • CUDA及GPU学习资源汇总
  • 强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法
  • 无人机PX4飞控ROS应用层开发:MAVROS 功能包介绍与飞控消息汇总(一)
  • 如何在Flask中处理表单数据
  • ISP住宅网络的特点是什么
  • 深度学习--------------序列模型
  • java技术栈介绍
  • 探索Web3前沿:革新性算力共享平台,重塑数字资源利用新时代
  • Spring Boot-API网关问题
  • ★ C++进阶篇 ★ 多态
  • 《深入理解JAVA虚拟机(第2版)》- 第12章 - 学习笔记
  • IP 协议分析《实验报告》
  • Hadoop生态圈拓展内容(一)
  • 计算机三级网络技术总结(一)
  • illustrator插件大全 免费插件介绍 Ai设计插件集合 (2)
  • 数据结构-2.顺序表
  • 春招审核流程优化:Spring Boot系统设计
  • vue3 axios ant-design-vue cdn的方式使用
  • zookeeper集群的搭建
  • 【机器学习】分类与回归——掌握两大核心算法的区别与应用
  • 【退役之再次线上部署】Spring Boot + VUE + Nginx + MySQL
  • C++ | Leetcode C++题解之第412题Fizz Buzz
  • PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
  • vue中v-bind和v-model的区别和应用
  • 车载软件架构 --- SOA设计与应用(中)
  • Spring Boot- 配置中心问题
  • 【Hot100】LeetCode—51. N 皇后
  • F12抓包11:UI自动化 - Recoder(记录器)
  • 【裸机装机系列】3.kali(ubuntu)-更新sources.list并重启
  • 华为OD机试真题-单词接龙-E卷(含题目描述+解题思路+代码解析)