Нераспознанное поле Джексон Ридер - PullRequest
0 голосов
/ 29 января 2019

Main.java

 ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
            Model k = mapper.readValue(new File(PATH), Model.class);

Model.java

 public class Model {

        @JsonProperty
        private Specs details;

        private class Specs{
            @JsonProperty
            private String topic;

            @JsonProperty
            private String id;

            @JsonProperty
            private List<String> list;
        }
    }

yamlfile.yaml

details:
   topic: "test"
   id: "123"
   servers: [
            "test2"
            ]

Я запускаю main.java и получите исключение:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "details" (class Model), not marked as ignorable (0 known properties: ])
 at [Source: src/main/config/yamlfile.yaml; line: 2, column: 3] (through reference chain: Model["details"])

Я понятия не имею, что я делаю не так, и, похоже, не могу найти проблему.Почему это не признается?

1 Ответ

0 голосов
/ 29 января 2019

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

Итак: добавьте методы получения / установки или добавьте @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) на уровне класса.Для обоих классов обязательно.

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