栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ObjectMapper基础简单使用(序列化问题)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ObjectMapper基础简单使用(序列化问题)

ObjectMapper基础简单使用

前言简单使用

1.@JsonIgnore——单一属性控制2.@JsonFormat(pattern = "yyyy-MM-dd")3.@JsonInclude(JsonInclude.Include.NON_NULL)4.全局控制代码5.补:把值为null的属性修改为""写出 依赖

前言

当使用com.fasterxml.jackson.databind.ObjectMapper.writevalueAsString(Object) 将JavaBean实体转换为json的时候,怎么忽略掉某些属性不参与序列化等。
常见场景:
a. 值为空或值为空字符串的属性不参加序列化
b. 某实体在转json时不参加序列化
c. 日期格式化
d. 实体内非属性字段,但是以is开头的方法(isXXX/is_XXX),别的方法未发现看之前可以先参考一下另一篇文章,作为com.alibaba.fastjson和ObjectMapper的对比
简单说 Fastjson 定制序列化 + 自定义序列化. 简单使用

首先说明,用 ObjectMapper 转换json的
(1)实体转json时,值为空字符串和null的属性都没有排除
(2)实体里is开头的方法(isXXX/is_XXX)会被当作属性转换到json里
接下来就简单说一点常用的基础应用 1.@JsonIgnore——单一属性控制

实体里的属性上或方法上加注解即可不序列化
2.@JsonFormat(pattern = “yyyy-MM-dd”)

属性上加注解可格式化日期,只需注意别用错了,否则有用别的包下的不生效

com.fasterxml.jackson.annotation.JsonFormat
3.@JsonInclude(JsonInclude.Include.NON_NULL)

将注解放在属性上,如果该属性为NULL则不参与序列化
如果放在类上边,那对这个类的全部属性起作用
Include.NON_NULL 属性为NULL 不序列化
Include.NON_EMPTY 属性为 空字符串或者为 NULL 都不序列化

Include.Include.ALWAYS 默认
Include.NON_DEFAULT 属性为默认值不序列化 4.全局控制代码

MapperFeature.AUTO_DETECT_IS_GETTERS
全局控制排除is开头的方法objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS,false);其他的直接看图吧:
5.补:把值为null的属性修改为""写出

        ObjectMapper objectMapper = new ObjectMapper();
//        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));//日期格式化
        objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS,false);//排除is开头的方法

        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
            @Override
            public void serialize(Object arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException, JsonProcessingException {
                //arg1.writeString("");
                arg1.writeString("Is null ???? I want to be an empty string!!!");
            }
        });
        //return objectMapper.writevalueAsString(petShop);
        return objectMapper.writerWithDefaultPrettyPrinter()
                .writevalueAsString(petShop);
 
依赖 
 
     2.9.8
 

  com.fasterxml.jackson.core
    jackson-annotations
    ${jackson.version}


    com.fasterxml.jackson.core
    jackson-core
    ${jackson.version}


    com.fasterxml.jackson.core
    jackson-databind
    ${jackson.version}

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号