无法识别的字段杰克逊 YAML 读取器



Main.java

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

型号.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"])

我不知道我在这里做错了什么,我似乎无法找出问题所在。为什么无法识别?

默认情况下,Jackson 可以访问公共字段以进行序列化和反序列化。如果没有可用的公共字段,则使用公共获取者/设置者。

所以:在类级别添加 getter/setter 或添加@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)。对于这两个类,当然。

最新更新