Игнорируйте пустые поля и пустые поля / массивы с Джексоном - PullRequest
0 голосов
/ 22 февраля 2019

Мой проект основан на 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...