Джексон не сериализует хэш-карту

1

У меня есть этот метод:

private String serializeToJson(T item) {
    String json;
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    try {
        json = ow.writeValueAsString(item);
    } catch (IOException e) {
        e.printStackTrace();
        json = "";
    }
    return json;
}

с этим пунктом:

Изображение 174551

и все же json равно:

{
  "saveDate" : "12:29:29 29-Mar-02015"
}

почему failureDict не сериализуется?

и это пункт:

public class FailedResponses {


    HashMap<String, Set<String>> failuresDict;
    public String saveDate;

    public FailedResponses() {

        failuresDict = new HashMap<>();
    }
  • 0
    Пожалуйста, покажите класс или ваш предмет.
  • 0
    Я добавил код. Спасибо
Показать ещё 2 комментария
Теги:
jackson

1 ответ

1
Лучший ответ

Джексон будет работать магией на общественных полях или публичных геттерах и сеттерах. Я бы рекомендовал вам сделать поля вашего объекта приватными для лучшей инкапсуляции и добавить публичные геттеры/сеттеры, чтобы позволить джексону его/сериализовать.

Лично мне нравится использовать аннотации jackson, чтобы сделать его явным, для чего используется объект, и чтобы у вас был полный контроль над наименованием полей, созданных джексоном, без необходимости создавать неидиоматические имена getter/setter или variable

Ещё вопросы

Сообщество Overcoder
Наверх
Меню