ObjectMapper在日期字段返回空值



我的数据如下,保存在名为risk.json的测试文件夹

[{
"Risk": "BN",
"Classification": null,
"LastDefaultDate": "1915-04-14 00:00:00"
}]

我的RiskClass定义如下

@Data
@JsonIgnoreProperties({"document"})
public class RiskClass implements KeyedObject {
String risk;
String classification;
Date lastDefaultDate;
@Override
public String getKey() {
return risk;
}
}

在我的数据准备类中,我试图通过以下操作来填充一个映射

List<RiskClass> rList = ObjectUtils.jsonStringToObjList(readFileAsString("test", "risk.json"), RiskClass.class);
Map<String, RiskClass> riskMapLocal = new HashMap<>();
for (RiskClass rMap : rList) {
riskMapLocal.put(rMap.getRisk(), rMap);
}

现在当我尝试打印riskmalocal时,在lastDefaultDate下我得到空值。

json中的属性名以大写字母开头-Risk等。POJO中的字段以小写字母risk开头,因此它们不能自动匹配。

  1. 在json中将它们改为小写
  2. 在字段上使用注释JsonProperty来指定要匹配该字段的属性名称。
public class RiskClass {
@JsonProperty("Risk")
String risk;
}

在属性lastDefaultDate:

添加注释
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime lastDefaultDate;

还将类型Date更改为LocalDateTime,因为日期类型已过时(双关语)。要了解更多细节,请查看这个问题及其最佳答案:Spring Data JPA -用于json序列化的ZonedDateTime格式

相关内容

  • 没有找到相关文章

最新更新