[英]Need help on mapping Json (JsonNode) to Java Object
我們可以從以下服務之一獲得現有的Json響應:
{
"CustomerInfoResponse": [
{
"CustomerInfo": {
"customerId": "17414101",
"customerCode": "41020393888"
}
},
{
"CustomerInfo": {
"customerId": "17414100",
"customerCode": "41020393888"
}
},
{
"CustomerInfo": {
"customerId": "17414099",
"customerCode": "41020393888"
}
}
]
}
我們在下面的以下類上使用com.fasterxml.jackson.databind.JsonNode對此進行映射:
public class CustomerInfoResponse {
@JsonProperty(value = "CustomerInfoResponse")
private List<CustomerInfo> customerInfo;
public List<CustomerInfo> getCustomerInfo() {
return customerInfo;
}
public void setCustomerInfo(final List<CustomerInfo> customerInfo) {
this.customerInfo = customerInfo;
}
}
和
@JsonTypeInfo(include = As.WRAPPER_OBJECT, use = Id.NAME)
public class CustomerInfo {
private String customerId;
private String customerCode;
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public String getCustomerCode() {
return customerCode;
}
public void setCustomerCode(String customerCode) {
this.customerCode = customerCode;
}
}
現在,Json格式已更改為以下格式。 我是Json Mapping的新手,我想了解對Java類有什么改變
{
"CustomerInfo": [
{
"customerId": "112217",
"customerCode": "41020393888"
},
{
"customerId": "112218",
"customerCode": "41020393888"
}
]
}
要從修改后的Json進行映射,您應該:
將成員customerInfo的注釋更改為值,該值顯示在Json- CustomerInfo中,而不是先前的CustomerInfoResponse 。 注意, value =可以省略。
從類CustomerInfo中刪除注釋
修改后的Java類應如下所示:
public class CustomerInfoResponse {
@JsonProperty("CustomerInfo")
private List<CustomerInfo> customerInfo;
...
}
public class CustomerInfo {
private String customerId;
private String customerCode;
...
}
不必要,但使用JsonProperty注釋對類成員進行注釋是一種好習慣。 這將類中使用的名稱與Json鍵解耦。 因此,它將是這樣的:
public class CustomerInfo {
@JsonProperty("customerId")
private String customerId;
@JsonProperty("customerCode")
private String customerCode;
...
}
關於Gson-您不能在Play上使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.