我的数据如下,保存在名为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
开头,因此它们不能自动匹配。
- 在json中将它们改为小写
- 在字段上使用注释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格式