我的项目基于jdk1.6.0_141构建,我目前正在使用杰克逊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>
我想从我的结果中删除NULL值和空数组,这是一个json字符串,但没有删除这些null值。我什至用
@JsonInclude(JsonInclude.Include.NON_NULL)
,但结果仍然相同。我对构建于JDK 8中的anothe rproject应用了相同的内容,而jackson的版本为2.9.2,并且在响应中,仅通过添加NON_EMPTY即可删除所有null和emty字段和数组。
@JsonInclude(JsonInclude.Include.NON_EMPTY)
有人可以指导我为什么我没有得到预期结果的原因。如何正确使用JsonInclude跳过所有null,空字段和空数组。
这是我用来从资源文件夹加载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;
}