待反序列化 json 字符串
{
"valuationMethods": {
"valuationMethod": [
{
"methodId": 1,
"methodName": "比较法",
"assetTypeCode": "M010001",
"recommendPriority": 0
},
{
"methodId": 2,
"methodName": "参照法",
"assetTypeCode": "M010002",
"recommendPriority": 1
}
]
},
"assetCode": "粤国用2020第00001号",
"city": "深圳",
"assetPackageName": "A户资产包",
"adjustOfSpecialUse": 0.00512
}
预期结果
{
"valuationMethods": [
{
"assetTypeCode": "M010001",
"methodId": 1,
"methodName": "比较法",
"recommendPriority": 0,
"canValuation": null
},
{
"assetTypeCode": "M010002",
"methodId": 2,
"methodName": "参照法",
"recommendPriority": 1,
"canValuation": null
}
],
"assetCode": "粤国用2020第00001号",
"city": "深圳",
"assetPackageName": "A户资产包",
"adjustOfSpecialUse": 0.00512
}
方式1
@Data
public class AssetDTO {
private String assetCode;
private String city;
private String assetPackageName;
private List<AssetTypeMethod> valuationMethods;
private BigDecimal adjustOfSpecialUse;
public void setValuationMethods(final Map<String, List<AssetTypeMethod>> valuationMethods) {
this.valuationMethods = valuationMethods.get("valuationMethod");
}
}
方式2
@Data
public class AssetDTO {
// @JsonProperty("valuationMethods") 可省
@JsonCreator
public AssetDTO(@JsonProperty("valuationMethods")final Map<String, List<AssetTypeMethod>> valuationMethods) {
this.valuationMethods = valuationMethods.get("valuationMethod");
}
private String assetCode;
private String city;
private String assetPackageName;
private List<AssetTypeMethod> valuationMethods;
private BigDecimal adjustOfSpecialUse;
}
@JsonCreator作用: 指定反序列化时@JsonCreator注解的构造函数被会调用。如果没有这个注解,则默认会调用无参的构造函数