ObjectMapper сериализует ноль как строку - PullRequest
0 голосов
/ 25 сентября 2019

Класс модели:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class AccountPojo implements Serializable {
    @JsonView(JsonViews.AccountsPermissions.class)
    private Integer id;
    @JsonView(JsonViews.AccountsPermissions.class)
    private String username;
    @JsonView({JsonViews.AccountsPermissions.class, 
JsonViews.AccountProfile.class})
    private String firstName;
    @JsonView({JsonViews.AccountsPermissions.class,JsonViews.AccountProfile.class})
    private String lastName;
    ...

Перед сериализацией AccountPojo (toString) имеет вид:

AccountPojo (id: 1, username: xyz, firstName: xyz, lastName: null, ...)

Сериализация:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
String serialized;
try {
     serialized = mapper.writerWithView(JsonViews.AccountProfile.class).writeValueAsString(accountPojo);
...

После сериализации я получаю:

{
    "firstName":"xyz",
    "lastName":"null",
    ...
}

Представления работают так, как и ожидалось - поскольку я присвоил mapper.writerWithView() соответствующий класс, только поля, отмеченные JsonViews.AccountProfile.class, сериализуются.

Проблема в том, что null интерпретируется как "null".

Что не работает:

  • mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
  • досадно, что Gson дает тот же результат, например:
Gson gson = new Gson();
serialized2 = gson.toJson(accountPojo);

То, что я ищу, - это предпочтительно исключить поля со значениями null в сериализации или, по крайней мере,имеют значения null вместо "null".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...