记录一下一些关于Jackson工具类的使用

Jackson工具类 -封装
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.HashMap;

//提供将java对象转化成json结构
public final class JsonUtil{
    private static final ObjectMapper objectMapper=new ObjectMapper();
    private static final JsonUtil INSTANCE=new JsonUtil(); 
    private JsonUtil(){}
    public static JsonUtil getInstance(){
        return INSTANCE;
    }
    static{
        SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期输出格式
        objectMapper.setDateFormat(dateFormat);
        //设置将对象转换成JSON字符串时候:包含的属性不能为空或"";
        //Include.Include.ALWAYS 默认
        //Include.NON_DEFAULT 属性为默认值不序列化
        //Include.NON_EMPTY 属性为 空("") 或者为NULL都不序列化
        //Include.NON_NULL 属性为NULL 不序列化
        //objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);//序列化的时候序列化全部的属性
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
        //反序列化的时候如果多了其他属性,不抛出异常
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);//转化成格式化的json
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
        //是否允许一个类型没有注解表明打算被序列化。默认true,抛出一个异常;否则序列化一个空对象,比如没有任何属性。
        objectMapper.disable(SerializationFeature.FLUSH_AFTER_WRITE_VALUE);
        //该特性决定是否在writeValue()方法之后就调用JsonGenerator.flush()方法。
        //当我们需要先压缩,然后再flush,则可能需要false。
    }

     /**
     * @ 将对象序列化
     * @ param obj
     * @ return byte[]
     * @ create by ostreamBaba on 上午12:35 18-9-18
     */

    public static <T> byte[] serialize(T obj){
        byte[] bytes;
        try{
            bytes=objectMapper.writeValueAsBytes(obj);
        }catch (JsonProcessingException e){
            throw new IllegalStateException(e.getMessage(),e);
        }
        return bytes;
    }

    /**
     * @ 反序列成对象
     * @ param data
     * @ param clazz
     * @ return T
     * @ create by ostreamBaba on 上午12:35 18-9-18
     */

    public static <T> T deserialize(byte[] data,Class<T> clazz){
        T obj;
        try{
            obj=objectMapper.readValue(data,clazz);
        } catch (IOException e) {
            throw new IllegalStateException(e.getMessage(),e);
        }
        return obj;
    }

    /**
     * @ 将json转化成对象
     * @ param json
     * @ param clazz
     * @ return T
     * @ create by ostreamBaba on 上午12:37 18-9-18
     */

    public static <T> T jsonToObject(String json,Class<?> clazz){
        T obj;
        JavaType javaType=objectMapper.getTypeFactory().constructType(clazz);
        try{
            obj=objectMapper.readValue(json,javaType);
        } catch (IOException e) {
           throw new IllegalStateException(e.getMessage(),e);
        }
        return obj;
    }

    /**
     * @ 将json转化成list
     * @ param json
     * @ param collectionClass
     * @ param elementClass
     * @ return T
     * @ create by ostreamBaba on 上午12:38 18-9-18
     */

    public static <T> T jsonToObjectList(String json,Class<?> collectionClass,Class<?>... elementClass){
        T obj;
        JavaType javaType=objectMapper.getTypeFactory().constructParametricType(collectionClass,elementClass);
        try{
            obj=objectMapper.readValue(json,javaType);
        }catch (IOException e){
            throw new IllegalStateException(e.getMessage(),e);
        }
        return obj;
    }

    /**
     * @ 将json转化成Map
     * @ param json
     * @ param keyClass
     * @ param valueClass
     * @ return T
     * @ create by ostreamBaba on 上午12:38 18-9-18
     */

    public static <T> T jsonToObjectHashMap(String json,Class<?> keyClass,Class<?> valueClass){
        T obj;
        JavaType javaType=objectMapper.getTypeFactory().constructParametricType(HashMap.class,keyClass,valueClass);
        try {
            obj=objectMapper.readValue(json,javaType);
        }catch (IOException e){
            throw new IllegalStateException(e.getMessage(),e);
        }
        return obj;
    }

    /**
     * @ 将对象转化成json
     * @ param obj
     * @ return java.lang.String
     * @ create by ostreamBaba on 上午12:39 18-9-18
     */

    public static String objectToJson(Object obj){
        String json;
        try{
            json=objectMapper.writeValueAsString(obj);
        }catch (IOException e){
            throw new IllegalStateException(e.getMessage(),e);
        }
        return json;
    }
}
关于上面工具类的一些测试
public class test {
    //测试json转化成list
    @Test
    public void test(){
        List<Bean> beanList=new ArrayList<>();
        beanList.add(new Bean(1));
        beanList.add(new Bean(2));
        beanList.add(new Bean(3));
        beanList.add(new Bean(4));
        String json=JsonUtil.objectToJson(beanList);
        System.out.println(JsonUtil.jsonToObjectList(json,List.class,Bean.class).getClass());
        List<Bean> list=JsonUtil.jsonToObjectList(json,List.class,Bean.class);
        list.forEach(v->System.out.println(v.getId()));
    }
	//测试json转化成map
    @Test
    public void testJsonToObjectMap(){
        Map<String,Object> map=new HashMap<>();
        map.put("name","ostreamBaba");
        map.put("age",20);
        map.put("sex",'f');
        String json=JsonUtil.objectToJson(map);
        System.out.println(json);
        Map<String,Object> t=JsonUtil.jsonToObjectHashMap(json,String.class,Object.class);
        t.forEach((k,v)-> System.out.println(k+" "+v));
    }
}
//测试类
public class Bean implements Serializable{
    private static final long serialVersionUID = 168070289504099944L;
    private int id;
    public Bean() {}
    public Bean(int id) {
        this.id = id;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring boot中文文档,从安装到部署。 I. Spring Boot文件 1.关于文档 2.获得帮助 3.第一步 4.使用Spring Boot 5.了解Spring Boot功能 6.转向生产 7.高级主题 II。入门 8.介绍Spring Boot 9.系统要求 9.1.Servlet容器 10.安装Spring Boot 10.1.Java Developer的安装说明 10.1.1.Maven安装 10.1.2.Gradle安装 10.2.安装Spring Boot CLI 10.2.1.手动安装 10.2.2.使用SDKMAN安装! 10.2.3.OSX Homebrew安装 10.2.4.MacPorts安装 10.2.5.命令行完成 10.2.6.Windows Scoop安装 10.2.7.快速启动Spring CLI示例 10.3.从早期版本的Spring Boot升级 11.开发您的第一个Spring Boot应用程序 11.1.创建POM 11.2.添加Classpath依赖项 11.3.编写代码 11.3.1.@RestController和@RequestMapping Annotations 11.3.2.@EnableAutoConfiguration注释 11.3.3.“主要”方法 11.4.运行示例 11.5.创建一个可执行的Jar 12.接下来要阅读的内容 III。使用Spring Boot 13.构建系统 13.1.依赖管理 13.2.Maven 13.2.1.继承Starter Parent 13.2.2.在没有父POM的情况下使用Spring Boot 13.2.3.使用Spring Boot Maven插件 13.3.Gradle 13.4.Ant 13.5.Starters 14.构建您的代码 14.1.使用“默认”包 14.2.找到主应用程序类 15.配置类 15.1.导入其他配置类 15.2.导入XML配置 16.自动配置 16.1.逐步更换自动配置 16.2.禁用特定的自动配置类 17. Spring Beans和依赖注入 18.使用@SpringBootApplication Annotation 19.运行您的应用程序 19.1.从IDE运行 19.2.作为打包应用程序运行 19.3.使用Maven插件 19.4.使用Gradle插件 19.5.热插拔 20.开发人员工具 20.1.Property默认值 20.2.自动重启 20.2.1.记录条件评估中的更改 20.2.2.不包括资源 20.2.3.观看其他路径 20.2.4.禁用重启 20.2.5.使用触发器文件 20.2.6.自定义重新启动类加载器 20.2.7.已知限制 20.3.LiveReload 20.4.全局设置 20.5.远程应用 20.5.1.运行远程客户端应用程序 20.5.2.远程更新 21.包装您的生产

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值