Для десериализации и сериализации использую библиотеку Jackson. Иногда на практике встречаюсь с требованием прописать сеттеры для класса сущности, т.к. десериализация не хочет работать. От модификатора доступа это не зависит. Зачем Jackson иногда это требует если он использует рефлексию?
class Example {
private String field;
}
...
String json = "{\"field\": \"test\"}";
ObjectMapper mapper = new ObjectMapper();
Example example = mapper.readValue(json, Example.class);
Да по умолчанию Jackson использует геттеры и сеттеры для сериализации и десериализации, однако как он только не конфигурируется.
Если Вы инициализируете ObjectMapper
вот так, то он будет использовать поля:
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibilityChecker(mapper.getSerializationConfig().getDefaultVisibilityChecker()
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
.withSetterVisibility(JsonAutoDetect.Visibility.NONE)
.withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
There's a problem: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') (line 1, column 2)
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
когда я запустила в eclipse все работало, однако в терминале все фейлится