提问者:小点点

如何使用Jackson从yaml文件创建地图?


这是类:

public class YamlMap {

    Map<String, String> mp = new HashMap<>();

    String get(String key) {
        return this.mp.get(key);
    }
}

这是props.yml:

mp:
  key1: ok
  key2: no

当我运行时:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
mapper.findAndRegisterModules();
YamlMap ym2 = mapper.readValue(new File("src/main/resources/props.yml"), YamlMap.class);

然后我得到错误:< br >线程“main”com . faster XML . Jackson . databind . exc . Unrecognized property Exception中的异常:无法识别的字段“YAML map”(YAML map类)


共1个答案

匿名用户

一个快速的解决方案是在您的字段上方添加< code>@JsonProperty("mp"):

public class YamlMap {

    @JsonProperty("mp")
    Map<String, String> mp;
}

Jackson core注释名可能会引起误解,但是即使这个注释名中有Json,它也能工作。Jackson可以被配置为解析不同的格式,比如Yaml或core但是对于映射来说,您仍然需要使用名称中包含Json的核心注释。

另一种解决方案是创建一个构造函数并使用@JsonCreator

public class YamlMap {

    Map<String, String> mp;

    @JsonCreator
    public YamlMap(@JsonProperty("mp") Map<String, String> mp) {
        this.mp = mp;
    }
}