使用 ModelMapper 将 JsonNode 转换为对象



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

我希望 JsonNode 反对

JsonNode :

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

我的对象

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

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

这是通过objectmapper实现的:

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

这是通过模型映射器实现的

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

我正在使用Spring Boot(2.4.2(。杰克逊是这里的默认解析器,因此无需添加任何依赖项。我使用以下代码仅使用ObjectMapper将JsonNode转换为My Object(不需要ModelMapper(。这里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

所以你需要强制地进行"投掷"或"尝试接住"。

在美元字段上使用@JsonProperty("USDdusd"(,在KRW字段上使用@JsonProperty("USDKRW"(将您的文件映射到JSON节点。 然后按照@Mayank所说使用ObjectMapper。

最新更新