回答(16)

2 years ago

mapper.setSerializationInclusion(Include.NON_NULL);

要么:

@JsonInclude(Include.NON_NULL)

class Foo

{

String bar;

}

或者,您可以在getter中使用 @JsonInclude ,以便在值不为null时显示该属性 .

2 years ago

如果使用Spring,则为全局配置

@Configuration

public class JsonConfigurations {

@Bean

public Jackson2ObjectMapperBuilder objectMapperBuilder() {

Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();

builder.serializationInclusion(JsonInclude.Include.NON_NULL);

builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);

builder.failOnUnknownProperties(false);

return builder;

}

}

2 years ago

Jackson 2.x使用

mapper.getSerializationConfig().withSerializationInclusion(JsonInclude.Include.NON_NULL);

2 years ago

使用Jackson> 1.9.11和<2.x使用 @JsonSerialize 注释来执行此操作:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

2 years ago

如果要将此规则添加到Jackson 2.6中的所有模型,请使用:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

2 years ago

这在 Spring boot 2.0.3 and Jackson 2.0 为我工作

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL)

public class ApiDTO

{

// your class variable and

// methods

}

2 years ago

@JsonInclude(JsonInclude.Include.NON_NULL)

@JsonInclude(JsonInclude.Include.NON_EMPTY)

应该管用 .

Include.NON_EMPTY 表示如果属性的值不为null且不为空,则序列化该属性 . Include.NON_NULL 表示如果属性值不为null,则序列化该属性 .

2 years ago

这已经困扰了我很长一段时间,我终于找到了这个问题 . 问题是由于导入错误 . 早些时候我一直在使用

com.fasterxml.jackson.databind.annotation.JsonSerialize

哪个已被弃用 . 只需替换导入

import org.codehaus.jackson.map.annotate.JsonSerialize;

import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;

并用它作为

@JsonSerialize(include=Inclusion.NON_NULL)

2 years ago

在我的情况下

@JsonInclude(Include.NON_EMPTY)

使它工作 .

2 years ago

您可以使用以下映射器配置:

mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);

自2.5以来你可以用户:

mapper.setSerializationInclusion(Include.NON_NULL);

2 years ago

在Jackson 2.x中,使用:

@JsonInclude(JsonInclude.Include.NON_NULL)

2 years ago

只是为了扩展其他答案 - 如果你需要在每个字段的基础上控制遗漏空值,请注释相关字段(或者注释字段的'getter') .

example - 这里只有 fieldOne 将从json中省略,如果它为null . 无论是否为空,都将包含 fieldTwo .

public class Foo {

@JsonInclude(JsonInclude.Include.NON_NULL)

private String fieldOne;

private String fieldTwo;

}

要将类中的所有空值省略为默认值,请注释该类 . 如有必要,仍可使用按字段/ getter注释覆盖此默认值 .

example - 这里 fieldOne 和 fieldTwo 将分别从json中省略,因为这是类注释的默认设置 . 但是,由于字段上的注释, fieldThree 将覆盖默认值并始终包含在内 .

@JsonInclude(JsonInclude.Include.NON_NULL)

public class Foo {

private String fieldOne;

private String fieldTwo;

@JsonInclude(JsonInclude.Include.ALWAYS)

private String fieldThree;

}

UPDATE

以上是 Jackson 2 . 对于 earlier versions 的 Jackson 你需要使用:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

代替

@JsonInclude(JsonInclude.Include.NON_NULL)

如果这个更新很有用,请在下面提到ZiglioUK的答案,它在我更新我的答案之前很久就指出了更新的Jackson 2注释!

2 years ago

对于Jackson 2.5使用:

@JsonInclude(content=Include.NON_NULL)

2 years ago

如果在 Spring Boot 中,您可以直接通过属性文件自定义jackson ObjectMapper .

示例 application.yml :

spring:

jackson:

default-property-inclusion: non_null # only include props if non-null

可能的值是:

always|non_null|non_absent|non_default|non_empty

2 years ago

如果您正在尝试序列化对象列表并且其中一个为null,那么您最终将在json中包含null项,即使

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

将导致:

[{myObject的},空]

得到这个:

[{myObject的}]

人们可以这样做:

mapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {

@Override

public void serialize(Object obj, JsonGenerator jsonGen, SerializerProvider unused)

throws IOException

{

//IGNORES NULL VALUES!

}

});

提示:如果您正在使用DropWizard,则可以使用environment.getObjectMapper()检索Jersey使用的ObjectMapper .

2 years ago

你可以设置 application.properties :

spring.jackson.default-property-inclusion=non_null

或 application.yaml :

spring:

jackson:

default-property-inclusion: non_null

java如何忽略过程值_如果值为null,如何告诉Jackson在序列化期间忽略某个字段?...相关推荐

  1. java 按规则生成编码_填值规则(编码生成)

    > 自动生成规则编码,比如: 订单号的生成,前缀+年月日时分秒 时间戳 如果创建一个规则实现? * 第一步:实现接口 IFillRuleHandler 参考实例: ``` /** * 填值规则D ...

  2. java传参怎么理解_如何理解Java的值传递

    结论 为了加深印象,先把结论放在文章开头. ++Java中只有值传递++. 形参与实参 在理解Java的值传递 实参Argument 实际参数,主调用函数传递给调用函数的参数 形参Parameter ...

  3. ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  4. hashmap修改对应key的值_死磕 java集合之HashMap源码分析

    简介 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度.它是非线程安全的,且不保证元素存储的顺序: 继承体系 Has ...

  5. poi导出excel写入公式_【java poi 写入Excel后读取公式值问题】poi导入excel

    java poi 写入Excel后读取公式值问题 不用改公式,只需要用cell.getNumericCellValue()获取,读出来就是正确的值了,如果你读出来的还有问题,说明你其他的地方写的还有问 ...

  6. java 像素值_(java)图片像素的操作

    因为做个游戏,需要一些图片资源,而获取到的图片资源都是jpg格式的,不是透明的,例如下面样式的: 为了取出其中的蓝光部分,透明化黑色背景,我开始了图片处理探索之路. 这篇文章的内容包含以下部分: 1. ...

  7. java包装和引用_回顾值传递和引用传递关于Java是值传递还是引用传递,网上有不一样的说法。1、基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递。2...

    回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递. 2.Java中只有值传递. 关于这个问题应该 ...

  8. java函数返回多个值_深入理解被调函数与主调函数之间的传值、传址、值返回、址返回...

    函数的英文是function,有功能的意思,函数的作用在于合理分配功能,增强程序的可读性.合理分解功能,降低程序的复杂性.隐藏函数内部的数据和实现,尽可能将问题局限于函数本身. 函数可以理解为一种功能 ...

  9. java左右值_为什么C/C++等少数编程语言要区分左右值?

    我个人认为的区分左值和右值的原因: 赋值的意义(基本上)是把右边的值放进左边的位置,替换掉左边位置原有的值.从而赋值对左边期望的是位置与其中的值的结合(相当于 C/C++ 的对象),对右边期望的是单纯 ...

最新文章

  1. 三、概念数据模型CDM(Conceptual Database Model )
  2. R可视化ggplot2中绘制趋势线
  3. C++中内存分配、函数调用和返回值问题
  4. 三菱plc 与 计算机 通讯,PC与三菱PLC之间的RS232通讯协议
  5. 冒泡排序和其两种优化
  6. 自己做回CA 给别人发证
  7. matlab raw函数,用matlab处理Raw格式的图像文件的方法
  8. 搭建一个简单的Spring boot+maven项目
  9. AI算法连载08:统计学之贝叶斯
  10. 阿里终面:为什么应用刚启动的时候比较卡,过一会就好了?
  11. pyQt显示系统文件目录
  12. WCF学习笔记(2)——独立WCF服务
  13. Vue实战:音乐播放器(一) 页面效果
  14. OUTLOOK新邮件到达提醒设置以及outlook最小化到托盘设置
  15. Spine 1.73+ 和谐版
  16. access和wps哪个一样_Office与WPS哪个好?Office与WPS全面评测
  17. K-means算法实现及分析
  18. Papervision3D材质
  19. 中国移动发狠,给携转用户巨额优惠,反击中国电信
  20. 微积分基础-极限,导数,反导数

热门文章

  1. python进度条 pyqt_python如何通过pyqt5实现进度条
  2. Qt 3D的未来展望
  3. MySQL视图附带例子详解(小白都能懂哦)
  4. 4.1.2 OS之文件逻辑结构(顺序文件、索引文件、索引顺序文件、多级索引顺序文件)关于数据库的索引如聚簇索引可以看一下索引文件例题的解析,感觉还是可以收获到东西的
  5. 在win10下面新建一个虚拟网卡
  6. Cpp / shared_ptr
  7. Tiniux 3.0 / Memory.c / OSMemFree
  8. 启明云端分享| RK3568核心板到底有哪些吸引眼球的地方呢
  9. Linux 在脚本里面启动终端并执行命令
  10. 服务器内存傲腾基本参数信息,服务器加傲腾内存