Java 使用Jackson反序列化包装列表

Java 使用Jackson反序列化包装列表,java,json,list,jackson,Java,Json,List,Jackson,我有一个JSON对象,如下所示: {"geonames":[ {"countryId":"2017370", "adminCode1":"73"}, {"countryId":"2027370", "adminCode1":"71"}, ...]} 如何将此对象直接反序列化到列表,忽略第一层(geonames包装器),而不是将包含列表的包装器对象反序列化为@JsonProperty(“geonames”)?使用具有根名称的ObjectReader Objec

我有一个JSON对象,如下所示:

{"geonames":[
   {"countryId":"2017370",
    "adminCode1":"73"},
   {"countryId":"2027370",
    "adminCode1":"71"},
    ...]}

如何将此对象直接反序列化到
列表
,忽略第一层(geonames包装器),而不是将包含
列表
的包装器对象反序列化为
@JsonProperty(“geonames”)

使用具有根名称的
ObjectReader

ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.reader(new TypeReference<List<GeoName>>() {}).withRootName("geonames");
List<GeoName> list = reader.readValue(json);
ObjectMapper mapper=new ObjectMapper();
ObjectReader=mapper.reader(新类型引用(){}).withRootName(“地理名称”);
List=reader.readValue(json);

如果您要从任何rest端点获取此JSON,请尝试spring rest模板,它有messgae转换器,负责编组和解编。有没有办法通过注释实现这一点?没有实例化读卡器?@localhost在直接反序列化到
列表时没有。如果可以将根名称更改为
List
,则可以使用
mapper.configure(反序列化功能.UNWRAP\u root\u值,true)
并直接使用映射器。@localhost但是
ObjectReader
有什么问题吗?这些都是内部生成的。无法更改根名称。谢谢你的回答,我接受:)