亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將多個 JSON 響應映射到單個 Java POJO?

如何將多個 JSON 響應映射到單個 Java POJO?

慕妹3242003 2023-06-04 15:12:20
需要將多種類型的 JSON 響應映射到單個 POJO,以便我可以比較不同的對象以深入了解差異。我曾嘗試將第一個響應映射到 POJO 并解析第二個響應以填充定義的 POJO:    class XXX {        @JsonProperty("accountHolder")        private String accountHolder;        @JsonProperty("routingNumber")        private String routingNumber;        @JsonProperty("balance")        private List<Balance> balance;        @JsonProperty("accountName")        private String accountName;        @JsonProperty("bankTransferCodeType")        private String bankTransferCodeType;        @JsonProperty("individualInformation")        private IndividualInformation individualInformation;        @JsonProperty("acctType")        private String acctType;        @JsonProperty("transactionList")        private TransactionList transactionList;        @JsonProperty("accountNumber")        private String accountNumber;        @JsonProperty("uniqueId")        private String uniqueId;        @JsonProperty("bankNetID")        private String bankNetID;        @JsonIgnore        private Map<String, Object> additionalProperties = new HashMap<String, Object>();    }第一反應:[    {        "ACCOUNT_NAME": "",        "ACCOUNT_NUMBER": "",        "AVAILABLE_BALANCE": null,        "CURRENT_BALANCE": "",        "FULL_ACCOUNT_NUMBER": null,    }]第二個回應:"bankAccount": [      {        "accountName": "",        "accountNumber": "",        "routingNumber": "",        "fullAccountNumber": "",        "bankTransferCodeType": "",        "acctType": "",        "transactionList": {          "transaction": [            {              "amount": {                "curCode": "",                "content": ""              }          ],          "oldestTxnDate": ""        },        "uniqueId":      }}期待一種將不同結構化 JSON 實體映射到單個 POJO 的通用方法。
查看完整描述

5 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

如何將多個 JSON 響應映射到單個 Java POJO?

由于這兩個響應似乎彼此完全不同,沒有任何共同點,因此我不會嘗試使用一個類來閱讀兩個響應。

期待一種將不同結構化 JSON 映射到單個 POJO 的通用方法。

  1. 您可以將兩個響應都解析為 a?Map<String, Object>,然后將值映射到一個公共類。

  2. 您可以創建單獨的類來映射每個響應。它將允許您將它們解耦并根據需要發展它們。當從一個對象映射到另一個對象時,您還可以使用MapStruct等映射框架來減少樣板代碼。


查看完整回答
反對 回復 2023-06-04
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

它似乎沒有任何通用的方法。但是你可以這樣做:

  • 為每個響應類型創建多個域類

  • 創建一個單一的標準域類

  • 為每個響應類創建映射器以將其映射到標準域類。


查看完整回答
反對 回復 2023-06-04
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

我建議使用 Jackson Json Views。這是相同的示例:


例子


public class Views {


    public class Global {

    }


    public class Internal extends Global {

    }

}


class XXX {


    @JsonView(Views.Global.class)

    @JsonProperty("accountHolder")

    private String accountHolder;


    @JsonView(Views.Internal.class)

    @JsonProperty("routingNumber")

    private String routingNumber;


}

希望能幫助到你。


查看完整回答
反對 回復 2023-06-04
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

我建議使用@JsonProperty("") 和@JsonAlias("")。


 class XXX {

    @JsonAlias("accountName")

    @JsonProperty("ACCOUNT_NAME")

    private String name;


    @JsonAlias("routingNumber")

    @JsonProperty("ROUTING_NUMBER")

    private String routing;}

我希望它有所幫助。


查看完整回答
反對 回復 2023-06-04
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

我所做的是創建了一個 MyResponse 模型,其中基本上包含您希望獲得的 JSON 響應中的所有響應字段。MyResponse 具有 c-tor 或接收這些字段或允許設置它們的設置器。


然后我創建了某種服務類 MyService,它可以發出多個請求并獲取響應。


然后你只需在某種經理類或任何你稱之為的類中做這樣的事情:


MyService mySer = new MyService();


MyResponse myRes = new MyResponse(

  mySer.getDetails(),

  mySer.getPicture(),

  mySer.getSomethingElse()

);

這些調用(getDetails、getPicture...)將請求發送到端點并返回響應,然后將響應映射到 MyResponse 類構造函數的字段中。這是由框架發生的,因此 MyResponse 具有 FIELD 類型的注釋 @XmlRootElement 和 @XmlAccessorType 以確保發生這種情況。如果出于某種原因,您不想創建包含 getPicture 結果的響應,例如,您只需將 null 分配給該輸入參數。


查看完整回答
反對 回復 2023-06-04
  • 5 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號