使用ModelMapper将JsonNode转换为对象

时间:2018-10-20 13:07:55

标签: java json modelmapper

我尝试了几次,但无法解决,需要帮助。

我希望JsonNode成为对象

JsonNode:

{
    "usdusd" : 1.00,
    "usdkrw" : 1100
}

MyObject

public class MyObject {
    private BigDecimal usd;
    private BigDecimal krw;
}

如何使用org.modelmapper.ModelMapper进行映射? JsonNode-> MyObject

3 个答案:

答案 0 :(得分:1)

这是通过objectmapper实现的:

ObjectMapper mapper=new ObjectMapper();
MyObject value=mapper.readValue(jsonNode,MyObject.class);

这是通过modelmapper实现的

ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().addValueReader(new JsonElementValueReader());
JsonElement responseElement = new JsonParser().parse(json);
MyObject foo = mapper.map(responseElement, MyObject.class);

答案 1 :(得分:0)

我正在使用 Spring Boot (2.4.2)。 Jackson 是这里的默认解析器,因此无需添加任何依赖项。我正在使用以下代码仅使用 ObjectMapper(无需 ModelMapper)将 JsonNode 转换为我的对象。这里 jsonNode 是 com.fasterxml.jackson.databind.JsonNode 的一个实例:

import com.fasterxml.jackson.databind.ObjectMapper;

...

ObjectMapper mapper = new ObjectMapper();
MyObj myObj = mapper.treeToValue(jsonNode, MyObj.class);

当然会抛出一个叫做

的检查异常
com.fasterxml.jackson.core.JsonProcessingException

所以你需要强制执行“抛出”或“尝试捕捉”它。

答案 2 :(得分:0)

在字段 usd 上使用 @JsonProperty("usdusd"),在字段 krw 上使用 @JsonProperty("usdkrw") 将您的字段映射到 json 节点。然后像@Mayank 所说的那样使用 ObjectMapper。