Мой проект основан на 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
}
Я добавил следующие зависимости в моем pomfile
<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)
, но результат все тот же.Я применил то же самое для другого rproject, который встраивается в JDK 8 и версия 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;
}