jackson Sping Boot -在解码时忽略根元素

t3irkdon  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(123)

远程服务器以这种格式发送响应

{
    "data": {
        "item": {
            a: ...
            b: ...
        }
    }
}

在我的spring应用程序中,我想直接用这种方式解码,而不是为数据创建一个类。

record Item(String a, String b){}

你知道怎么做吗?
我已经试过了,但是没用.

spring.jackson.deserialization.UNWRAP_ROOT_VALUE=true
@JsonRootName("data") 
record Item(String a, String b){}
3gtaxfhh

3gtaxfhh1#

您可以使用JsonNode#at方法只反序列化json的{"a": "aValue", "b": "bValue"} json部分,该方法返回一个JsonNode节点,该节点将使用ObjectMapper#treeToValue方法转换为Item对象,如下所示:

//pointing to the /data/item node
JsonNode itemNode = mapper.readTree(json).at("/data/item");
//Item will contain a=aValue and b=bValue
Item item = mapper.treeToValue(itemNode, Item.class);

相关问题