String s="{
"StatusCode": true,
"Datas": [
{
"Status": "未核单",
"StatusCode": true,
"TrackingNumber": "654144534060607480",
"Amt": "19.000",
"OtherAmt": "0.000",
"CcyCode": "RMB",
"Weight": "0.030"
},
{
"Status": "未核单",
"StatusCode": true,
"TrackingNumber": "6540606123407491",
"Amt": "19.000",
"OtherAmt": "0.000",
"CcyCode": "RMB",
"Weight": "0.050"
},
{
"StatusCode": false,
"TrackingNumber": "365012345565802",
"Message": "该单号系统中不存在!"
}
]
}";
ObjectMapper objectMapper = new ObjectMapper();
getOrderWeightAndAmt weightAndAmt = objectMapper.readValue(s,getOrderWeightAndAmt.class);
getOrderWeightAndAmt 和getOrderWeightAndAmtData两个实体类
@Data
public class getOrderWeightAndAmt {
private boolean StatusCode;
private List<getOrderWeightAndAmtData > Datas;
}
@Data
public class getOrderWeightAndAmtData {
private String Status;
private boolean StatusCode;
private String TrackingNumber;
private String Amt;
private String OtherAmt;
private String CcyCode;
private String Weight;
private String Message;
}
使用objectMapper.readValue()转化时会发生报错,提示实体类中有未识别的字段
Unrecognized field "StatusCode" (class net.hisnn.erp.model.auto.getOrderWeightAndAmt), not marked as ignorable (2 known properties: "datas", "statusCode"])
出现这个问题的原因是JSON数据中的字段名与Java对象中的字段名无法匹配
解决这个问题需要在实体类中添加@JsonProperty()注解,在Java对象和JSON数据之间建立映射关系
修改后的的实体类代码为:
@Data
public class getOrderWeightAndAmt {
@JsonProperty("StatusCode")
private Boolean StatusCode;
@JsonProperty("Datas")
private List<getOrderWeightAndAmtData> Datas;
}
@Data
public class getOrderWeightAndAmtData {
@JsonProperty("Status")
private String Status;
@JsonProperty("StatusCode")
private Boolean StatusCode;
@JsonProperty("TrackingNumber")
private String TrackingNumber;
@JsonProperty("Amt")
private String Amt;
@JsonProperty("OtherAmt")
private String OtherAmt;
@JsonProperty("CcyCode")
private String CcyCode;
@JsonProperty("Weight")
private String Weight;
@JsonProperty("Message")
private String Message;
}
注意事项:是Lombok在生成getter和setter方法时的会出现特殊情况。
对于boolean、Boolean类型的属性,Lombok生成的getter方法的命名规则是isXxx()而不是getXxx()。这是为了符合JavaBean的命名约定。
在使用Lombok的类中直接使用isXxx()和setXxx()方法来访问和设置对应对象属性的值。
在将JSON字符串转换为Java实体类时,遇到ObjectMapper无法识别字段的问题。原因是JSON字段名与Java实体类字段名不匹配。解决办法是在实体类中使用@JsonProperty注解建立映射。此外,当使用Lombok时,注意其生成的getter方法遵循JavaBean命名规则,可能需要使用特定方法访问属性。

855

被折叠的 条评论
为什么被折叠?



