首页 > 其他分享 >Json使用 jackjson 工具类

Json使用 jackjson 工具类

时间:2024-11-19 17:00:03浏览次数:1  
标签:return json Json jackjson static result catch 工具 null

Json使用 jackjson 工具类

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.JavaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class JsonUtil {
    private static ObjectMapper objectMapper = new ObjectMapper();
    private static JsonGenerator jsonGenerator = JsonUtil.getJsonGenerator();

    private static Logger log = LoggerFactory.getLogger(JsonUtil.class);

    private static JsonGenerator getJsonGenerator() {
        try {
            jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
            return jsonGenerator;
        } catch (IOException e) {
            log.error("get JsonGenerator error!" + e.toString());
            return null;
        }
    }

    /**
     * 把Java对象转换成json串
     *
     * @throws IOException
     */
    public static String writeEntity2Json(Object object) throws IOException {
        if (null == object) {
            log.error("class:JsonUtil,method:writeEntity2Json,param:object == null");
            return null;
        }
        log.debug("class:JsonUtil,method:writeEntity2Json,param:object=" + object);
        return objectMapper.writeValueAsString(object);
    }

    /**
     * 把List转换成json串
     *
     * @param list
     * @return
     * @throws IOException
     */
    @SuppressWarnings("rawtypes")
    public static String writeList2Json(List list) throws IOException {
        return objectMapper.writeValueAsString(list);
    }

    /**
     * 把List<Object>转换成List<json串>
     *
     * @param list
     * @return
     * @throws IOException
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static List<String> writeListObject2Json(List list) throws IOException {
        List<String> objectList = new ArrayList();
        Iterator iter = list.iterator();
        while (iter.hasNext()) {
            Object o = iter.next();
            String json = objectMapper.writeValueAsString(o);
            objectList.add(json);
        }
        return objectList;
    }

    /**
     * 把List<Object>转换成String[json串]
     *
     * @param list
     * @return
     * @throws IOException
     */
    @SuppressWarnings("rawtypes")
    public static String[] writeListObject2ArrayJson(List list) throws IOException {
        if (null == list || list.size() == 0) {
            log.error("class:JsonUtil,method:writeListObject2ArrayJson,param==null");
            return null;
        }
        String[] arrayJson = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
            Object o = list.get(i);
            String json = objectMapper.writeValueAsString(o);
            arrayJson[i] = json;
        }
        return arrayJson;
    }

    /**
     * 把map转换成json串
     *
     * @param map
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static String writeMap2Json(Map map) {
        try {
            return objectMapper.writeValueAsString(map);
        } catch (JsonGenerationException e) {
            e.printStackTrace();
            return null;
        } catch (JsonMappingException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

    }

    /**
     * JSON字符串转换为对象
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static Object readJson2Entity(String json, Class c) {
        log.debug("class:JsonUtil,method:readJson2Entity,param:json=" + json);
        try {
            return objectMapper.readValue(json, c);
        } catch (JsonParseException e) {
            log.error("class:JsonUtil,method:readJson2Entity", e);
            return null;
        } catch (JsonMappingException e) {
            log.error("class:JsonUtil,method:readJson2Entity", e);
            return null;
        } catch (IOException e) {
            log.error("class:JsonUtil,method:readJson2Entity", e);
            return null;
        }
    }

    /**
     * JSON转换为List对象
     */
    @SuppressWarnings("unchecked")
    public static List<LinkedHashMap<String, Object>> readJson2List(String json) {
        try {
            return objectMapper.readValue(json, List.class);
        } catch (JsonParseException e) {
            e.printStackTrace();
            return null;
        } catch (JsonMappingException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * JSON转换为数组对象
     */
    public static Object[] readJson2Array(String json) {
        try {
            return objectMapper.readValue(json, Object[].class);
        } catch (JsonParseException e) {
            e.printStackTrace();
            return null;
        } catch (JsonMappingException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * JSON转换为Map对象
     */
    @SuppressWarnings("unchecked")
    public static Map<String, Map<String, Object>> readJson2Map(String json) {
        try {
            return objectMapper.readValue(json, Map.class);
        } catch (JsonParseException e) {
            e.printStackTrace();
            return null;
        } catch (JsonMappingException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 对象转换字符串
     *
     * @param obj
     * @return
     */
    public static String Object2String(Object obj) {
        String result = null;
        try {
            result = objectMapper.writeValueAsString(obj);
        } catch (Exception e) {
            log.error("json转换异常", e);
        }
        return result;
    }

    /**
     * 字符串转换对象
     *
     * @param json
     * @param classObj
     * @return
     */
    public static Object String2Object(String json, Class<?> classObj) {
        Object result = null;
        try {
            result = objectMapper.readValue(json, classObj);
        } catch (Exception e) {
            log.error("json转换异常", e);
        }
        return result;
    }

    /**
     * 字符串转换Pagination对象,此类有firstIndex":1,"lastIndex":1属性会导致转换异常,过滤这2个属性
     *
     * @param json
     * @param classObj
     * @return
     */
    public static Object String2Pagination(String json, Class<?> classObj) {
        Object result = null;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            // 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
            objectMapper.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
            result = objectMapper.readValue(json, classObj);
        } catch (Exception e) {
            log.error("json转换异常", e);
        }
        return result;
    }

    /**
     * 字符串转换为List<?>
     *
     * @param json
     * @param classObj
     * @return
     */
    public static Object String2List(String json, Class<?> classObj) {
        Object result = null;
        try {
            result = objectMapper.readValue(json, getCollectionType(ArrayList.class, classObj));
        } catch (Exception e) {
            log.error("json转换异常", e);
        }
        return result;
    }

    private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
        return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    }

  }

 

 

 

//json工具类泛型接口

import java.util.ArrayList;
import java.util.List;

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.JavaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
  *
 */
public class JsonUtil {

    private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
    private static ObjectMapper mapper = new ObjectMapper();

    /**
     * 对象转换字符串
     *
     * @param obj
     * @return
     */
    public static String Object2String(Object obj) {
        String result = null;
        try {
            result = mapper.writeValueAsString(obj);
        } catch (Exception e) {
            logger.error("json转换异常", e);
        }
        return result;
    }

    /**
     * 字符串转换对象
     *
     * @param json
     * @param classObj
     * @return
     * @return
     */
    public static <T> T String2Object(String json, Class<T> classObj) {
        T result = null;
        try {
            result = mapper.readValue(json, classObj);
        } catch (Exception e) {
            logger.error("json转换异常", e);
        }
        return result;
    }

    /**
     * 字符串转换成较复杂的对象,如泛型对象
     *
     * @param json
     * @param classObj
     * @param valueType
     * @return
     */
    public static <T> T String2Object(String json, Class<?> classObj, Class<?>... valueType) {
        T result = null;
        try {
            result = mapper.readValue(json, getCollectionType(classObj, valueType));
        } catch (Exception e) {
            logger.error("json转换异常", e);
        }
        return result;
    }

    /**
     * 字符串转换为List<T>
     *
     * @param json
     * @param classObj
     * @return
     */
    public static <T> List<T> String2List(String json, Class<T> classObj) {
        List<T> result = null;
        try {
            result = mapper.readValue(json, getCollectionType(ArrayList.class, classObj));
        } catch (Exception e) {
            logger.error("json转换异常", e);
        }
        return result;
    }

    private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
        return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    }
}

 

原文链接:https://blog.csdn.net/hjxgood/article/details/20127319

标签:return,json,Json,jackjson,static,result,catch,工具,null
From: https://www.cnblogs.com/sunny3158/p/18555172

相关文章

  • 安利一款超级好用的 RESTful API 测试工具
    大伙儿听我说!今天我要给你们安利一个让我爱不释手的API神器——Apifox!这绝对是我用过最爽的接口管理工具,不接受反驳!......
  • 如何让项目管理更加顺畅?这些工具能帮你减少时间浪费!
    在任何一个行业中,项目的时间管理都是决定成功与否的关键因素之一。项目管理不仅仅是关于任务分配、资源调度和进度跟踪,更关乎如何在有限的时间内,最大化地提高工作效率、减少拖延、规避风险,从而缩短项目周期并确保项目的顺利完成。随着现代技术的进步,智能化的项目管理软件已经成为......
  • ReNamer Pro 7.5 中文绿色便携专业版-文件重命名工具
    前言我们日常生活和工作中所涉及的文件数量日益增多。无论是图片、音频、视频还是各种文档,这些文件在存储、管理和分享时,都需要有一个清晰、有序的文件命名规则。然而,手动重命名大量文件不仅耗时耗力,而且容易出错,这对于追求效率和准确性的现代生活来说显然是不现实的今天介绍的......
  • 【IDER、PyCharm】智能AI编程工具完整教程:ChatGPT Free - Support Key call AI GPT-o1
    文章目录CodeMoss简介CodeMoss的模型集成如何安装和配置CodeMossIDER插件安装步骤CodeMoss的实战使用AI问答功能代码优化与解释优化这段代码解释这段代码文件上传与对话联网查询与GPT助手联网查询GPT助手提升开发效率的最佳实践结语更多文献CodeMoss......
  • 推荐一个好用的 REST API 测试工具 Apifox
    大家好啊!今天给大家安利一个超级好用的RESTAPI测试工具——Apifox。说实话,作为一个经常和API打交道的开发者,以前总是被各种API测试和管理的问题困扰。直到遇到了Apifox,才发现原来API测试可以这么舒服!Apifox是啥?简单来说,Apifox就是一个"一站式"API开发测试工具。......
  • java中使用Jackson代替fastjson进行序列化处理
    方法详解这里会列出常用方法的详解,更多方法可查阅jacksonapi文档ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构对象转json字符串ObjectMapper通过writeValue系列方法将java对象序列化为json,并将json存储成不同的格式:String(writeVa......
  • 如何快速推进项目?这些企业用了哪些项目管理工具?
    在当今复杂的商业环境中,项目管理不仅仅是管理任务和时间的工具,它已经成为推动团队协作、提升企业执行力以及实现战略目标的核心环节。随着数字化转型的推进,越来越多的企业和团队开始借助智能化的项目管理软件来优化资源配置、提升工作效率、降低风险,最终实现项目的成功。今天,我们......
  • 快捷方式工具类 - C#小函数类推荐
          此文记录的是快捷方式操作类。/***快捷方式工具类AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:[email protected]:http://lzhdim.cnblogs.comDate:2024-01-1515:18:00使用参考:ShortC......
  • Windows电脑四大效率工具:轻松提升办公效率
    一、EV录屏:功能强大的录屏神器在电脑上录屏用它非常简单,可以选择全屏录制或者区域录制,可以选择是否录音,还有图片水印、文字水印、分屏录制,桌面画板等工具。此外还可以进行简单的视频剪辑、合并等。对于需要进行电脑录屏的打工人来说,简单又好用!二、敬业签:好用的手机、电脑云同......
  • NSSM封装Windows服务工具的使用与介绍
    NSSM是一个服务封装程序,它可以将普通exe程序或Java程序或Nodejs项目封装成服务,像windows服务一样运行。同类型的工具还有微软自己的srvany,不过NSSM更加简单易用,并且功能强大。它的特点如下:支持普通exe程序(控制台程序或者带界面的Windows程序都可以)安装简单,修改......