待反序列化 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註解的構造函數被會調用。如果沒有這個註解,則默認會調用無參的構造函數