我有一个Yaml文档,其中包含对应于列表的映射条目。这里有一个例子:杰克逊异常时解析Yaml与列表值的地图
environments:
qa: [ 'us-east-1' ]
staging: [ 'us-east-1', 'us-west-2' ]
我使用杰克逊2.3.2使用以下字段&存取的文件解析成一个类:
private Map<String, List<String>> environments = new HashMap<String, List<String>>();
@JsonProperty
public Map<String, List<String>> getEnvironments() {
return environments;
}
@JsonProperty
public void setEnvironments(Map<String, List<String>> environments) {
this.environments = environments;
}
我与测试YAML文件的读取以下:
inputStream = new FileInputStream("src/test/resources/configuration_test.yml");
config = mapper.readValue(inputStream, MyConfiguration.class);
下引发异常,堆栈跟踪,这不是特别有帮助:
Caused by: java.lang.IllegalArgumentException: Can not find a deserializer for non-concrete Collection type [collection type; class com.google.common.collect.ImmutableList, contains [simple type, class io.dropwizard.metrics.ReporterFactory]]
at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.createCollectionDeserializer(BasicDeserializerFactory.java:814)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:392)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:350)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:263)
... 42 more
任何想法如何让杰克逊解析地图值作为一个列表?
我不能做同样的事情newObjectMapper()不接受任何参数。 – Naresh
您使用的是哪个dropwizard版本? – Carlos
Dropwizard版本是0.7.1 – Naresh