首页 > 其他分享 >JSON处理工具类

JSON处理工具类

时间:2024-09-24 12:21:31浏览次数:11  
标签:return String 处理 JSONObject json param JSONArray 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);
            }
        }
    }
}


标签:return,String,处理,JSONObject,json,param,JSONArray,JSON,工具
From: https://blog.51cto.com/u_15903793/12098444

相关文章

  • 低代码工具和大模型AI助手之间的关系(二)
    ......
  • 万象更新 Html5 - h5: h5 通过 Service Worker 拦截和处理网络请求(可以实现网络资源的
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-h5:h5通过ServiceWorker拦截和处理网络请求(可以实现网络资源的缓存)示例如下:h5\serviceWorker\worker.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • Linux C++ 开发8 - 性能分析工具汇总
    1.LinuxC++性能分析工具汇总1.1.gprof1.2.Valgrind1.3.Perf1.4.SystemTap1.5.NsightComputing1.6.GooglePerformanceTools1.7.IntelVTuneProfiler1.8.OProfile1.9.IntelVTune1.10.SystemTap1.11.FlameGraph2.总结1.LinuxC++性能分析工......
  • 并发编程工具集——Fork/Join-上(三十六)
    简述前面提到的线程池、Future、CompletableFuture和CompletionService,这些工具类都是在帮助我们站在任务的视角来解决并发问题,而不是让我们纠缠在线程之间如何协作的细节上(比如线程之间如何实现等待、通知等)。精髓:对于简单的并行任务,你可以通过“线程池+Future”的方案......
  • 笔魂AI绘画工具使用感受
    在数字化艺术的浪潮中,AI技术正逐渐成为推动创意产业发展的重要力量。作为一名数字艺术家,我近期有幸体验了一款名为“笔魂AI绘画”的工具,它以其独特的功能和便捷的操作界面给我带来了全新的创作体验。笔魂AI绘画工具的使用过程非常直观。初次打开软件时,其简洁明了的界面设计让人一目......
  • Java 动态编译工具 Janino 和 Liquor 差别
    如果你只要Java7及以下的语法支持,建议Janino。如果要你想更全的Java8、Java11、Java17、Java21等语法,可以选Liquor。1、它们相同的地方提供的相似的能力接口接口JaninoLiquor动态编译器SimpleCompilerDynamicCompiler表达式评估器ExpressionEvaluator......
  • 绘制印章的开源工具DrawStampUtils使用
    最近写了一个绘制印章的工具DrawStampUtils,具有比较完整的印章修改效果,定制化度较高,git地址(https://github.com/xxss0903/drawstamputils),也可以在npmjs中搜索DrawStampUtils即可//将要绘制的canvas组件的引用传入,还有就是对应的毫米转像素的大小传入即可conststampCanva......
  • cmd增强工具——clink
    作为一个喜欢折腾各种花里胡哨东西的人,我每次都会花费大量时间在这上面。cmd作为windows一个很重要的组成部分,很多时候我们都会应用到它。与新出的powershell相比,cmd的功能肯定是没有那么强大的,但其重要性绝对不输给pwsh。但是cmd真的很简单,没有命令补全,也没有这么多的快捷键,功能......
  • 不是,哥们,谁教你这样处理生产问题的?
    你好呀,我是歪歪。最近遇到一个生产问题,我负责的一个服务触发了内存使用率预警,收到预警的时候我去看了内存使用率已经到了80%,看了一眼GC又发现还没有触发FullGC,一次都没有。基于这个现象,当时推测有两种可能,一种是内存溢出,一种是内存泄漏。好,假设现在是面试,面试官目前就给了......
  • NLP--自然语言处理学习-day1
    一.初步认识NLP自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学和人工智能(AI)的一个交叉领域,旨在使计算机能够理解、分析、生成和处理人类语言的能力。它结合了计算语言学、人工智能、机器学习和语言学等多个领域的知识。NLP的主要任务文本分类:将文本内容分......