java - 当映射到 POJO 中的 Double 类型字段时,Jackson ObjectMapper 将 Integer 值转换为 null
问题描述
请多多包涵。我浏览了很多链接,但找不到适合我的案例的解决方案。我需要帮助。
注意:我无法更改 JSON 请求(在 Test as map 中表示)
这是我的 POJO:
public class TestModelWithDoubleField {
private Double frequency;
public Double getFrequency(){
return frequency;
}
/**
* @param frequency the frequency to set
*/
public void setFrequency(Double frequency) {
this.frequency = frequency;
}
/**
* @param frequency the frequency to set
*/
@JsonIgnore
public void setFrequency(Integer frequency) {
if(frequency != null) {
setFrequency(new Double(frequency));
}
}
}
这是失败的测试:
@Test
public void testWithIntegerValueConvertToDoubleFieldInPOJO() throws IOException {
final Map<String, Integer> map = new HashMap<>();
map.put("frequency", 900);
TestModelWithDoubleField pojo = objectMapper.convertValue(map, TestModelWithDoubleField.class);
Assert.assertNotNull(pojo);
Assert.assertNotNull(pojo.getFrequency()); //-> This is giving output as null. Hence fails.
}
在线路Assert.assertNotNull(pojo.getFrequency());
频率为零。因此测试失败。
我希望它自动转换为 Double 类型。换上@JsonIgnore
另一个二传手也没有用。
任何从该地图中获取有效对象的方法都可以。
解决方案
只需添加@JsonProperty("frequency")
所需的二传手。你甚至不需要@JsonIgnore
另一个。
public static class TestModelWithDoubleField
{
private Double frequency;
public Double getFrequency()
{
return frequency;
}
/**
* @param frequency the frequency to set
*/
@JsonProperty("frequency")
public void setFrequency(Double frequency)
{
this.frequency = frequency;
}
/**
* @param frequency the frequency to set
*/
public void setFrequency(Integer frequency)
{
if(frequency != null)
{
setFrequency(new Double(frequency));
}
}
}
推荐阅读
- php - php imagejpeg() 函数会破坏 png 图像
- reactjs - ReactJS + Typescript:避免界面中的重复属性
- r - 按R中的状态编号映射
- jquery - 将值存储在 jquery 价格范围滑块的变量中
- java - AWS QLDB - Java 教程步骤 2 (ConnectToLeger) - 无法确定要授权的服务/操作名称
- docker - 为什么 kubernetes 中的 elasticsearch 集群启动这么慢
- keras - 将 model.fit_generator 转换为 model.fit
- machine-learning - 周期性激活函数
- python - ConvergenceWarning:随机优化器:达到最大迭代次数,优化尚未收敛。% self.max_iter, ConvergenceWarning)
- java - 使用python将内容写入文本文件并使用java清除同一文本文件的内容