如何使用ObjectMapper将JSON嵌套属性转换为对象
嵌套JSON转对象的几种实现方法
针对你现在的嵌套JSON结构,有以下几种方式可以实现和之前一样的转换效果:
方法一:直接提取嵌套节点解析
先把整个JSON解析成JsonNode,再提取出something对应的节点,最后转成SomethingDTO:
JsonNode rootNode = objectMapper.readTree(myJson); JsonNode somethingNode = rootNode.get("something"); SomethingDTO somethingDto = objectMapper.treeToValue(somethingNode, SomethingDTO.class);
方法二:用包装类承接
创建一个包装类来对应外层的JSON结构,解析后再取出目标对象:
// 定义包装类 public class SomethingWrapper { private SomethingDTO something; // 生成getter和setter方法 public SomethingDTO getSomething() { return something; } public void setSomething(SomethingDTO something) { this.something = something; } } // 解析代码 SomethingWrapper wrapper = objectMapper.readValue(myJson, SomethingWrapper.class); SomethingDTO somethingDto = wrapper.getSomething();
方法三:通过注解自动解包(需修改DTO类)
如果允许修改SomethingDTO,可以用Jackson的@JsonRootName注解,配合开启解包配置来直接解析:
// 修改你的SomethingDTO类 import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("something") public class SomethingDTO { private String color; // 生成getter和setter方法 } // 解析时配置ObjectMapper objectMapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE); SomethingDTO somethingDto = objectMapper.readValue(myJson, SomethingDTO.class);
内容的提问来源于stack exchange,提问作者André Santaló
相关产品推荐
相关产品推荐

