簡體   English   中英

在將Json(JsonNode)映射到Java對象方面需要幫助

[英]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進行映射,您應該:

  1. 將成員customerInfo的注釋更改為值,該值顯示在Json- CustomerInfo中,而不是先前的CustomerInfoResponse 注意, value =可以省略。

  2. 從類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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM