java - 使用 Jackson 忽略空字段和空字段/数组
问题描述
我的项目建立在 jdk1.6.0_141 上,我目前使用的是 jackson 2.7.9。下面是用于编组对象的类。
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Employee{
private String number;
private String department;
private List<Project> projects;
//getters and setters goes here
}
我在我的 pom 文件中添加了以下依赖项
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.9</version>
</dependency>
我想从我的结果中删除空值和空数组,这是一个 json 字符串,但空值没有被删除。我什至用过
@JsonInclude(JsonInclude.Include.NON_NULL)
但结果还是一样。我将同样的方法应用于构建在 JDK 8 中的另一个 rproject,jackson 的版本是 2.9.2,在响应中,它仅通过添加 NON_EMPTY 来删除所有空值和空字段和数组。
@JsonInclude(JsonInclude.Include.NON_EMPTY)
有人可以指导我为什么我没有得到预期的结果。如何正确使用 JsonInclude 来跳过所有空值、空字段和空数组。
这是我调用以从资源文件夹加载 json 文件并解析的方法
InputStream in = getClass().getResourceAsStream(
"/EmployeeFile.json");
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
Employee emp = JSONUtil.toObject(os.toByteArray());
对象映射器
public static Employee toObject(byte[] jsonData) throws IOException {
Employee emp = null;
ObjectMapper objectMapper = new ObjectMapper();
emp = objectMapper.readValue(jsonData, Employee.class);
return emp;
}
解决方案
推荐阅读
- python - 使用 numpy 将时间平均值恢复为即时值
- angular - 为什么服务作为一个实例跨模块共享?
- pine-script - TradingView 中的趋势线(Pine 脚本)
- ssl - TLS/SSL 证书已过期,需要在 POSTFIX SMTP 邮件服务器上更新它们
- azure - 检索 Microsoft Azure 应用服务存储的配额
- image-processing - 如何计算/确定给定形状的圆的百分比/部分(很可能是部分圆)
- terraform - 如何获取导入的 aws_db_instance 的 ARN?
- javascript - 如何使用 es6-Promise 执行顺序并行任务?
- mysql - Logstash jdbc 无法连接到 MySQL 数据库
- javascript - object[htmltablelement] 代替表格 html 的字符串