Java 使用Jackson反序列化包装列表
我有一个JSON对象,如下所示: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
{"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
有什么问题吗?这些都是内部生成的。无法更改根名称。谢谢你的回答,我接受:)