java ObjectMapper在日期字段中返回空值[重复]

5f0d552i  于 2023-01-24  发布在  Java
关注(0)|答案(2)|浏览(210)
    • 此问题在此处已有答案**:

Jackson ObjectMapper returns null when Object variable is set to Private(4个答案)
15小时前关门了。
我的数据如下所示,并保存在名为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;
    }
}

在我的数据准备类中,我尝试通过以下操作填充其中一个Map

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);
}

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

t3irkdon

t3irkdon1#

json中的属性名以大写的-Risk开头,等等。POJO中的字段以小写的-risk开头,所以它们不能被自动匹配。
1.在json中将它们更改为小写
1.在字段上使用注解JsonProperty指定要与此字段匹配的属性的名称。

public class RiskClass {

  @JsonProperty("Risk")
  String risk;
}
2ledvvac

2ledvvac2#

在特性lastDefaultDate上添加注解:

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

此外,将类型Date更改为LocalDateTime,因为日期类型已过时(双关语)。有关详细信息,请查看此问题及其最佳答案:Spring Data JPA - ZonedDateTime format for json serialization

相关问题