5 回答

TA貢獻1818條經驗 獲得超11個贊
如何將多個 JSON 響應映射到單個 Java POJO?
由于這兩個響應似乎彼此完全不同,沒有任何共同點,因此我不會嘗試使用一個類來閱讀兩個響應。
期待一種將不同結構化 JSON 映射到單個 POJO 的通用方法。
您可以將兩個響應都解析為 a?
Map<String, Object>
,然后將值映射到一個公共類。您可以創建單獨的類來映射每個響應。它將允許您將它們解耦并根據需要發展它們。當從一個對象映射到另一個對象時,您還可以使用MapStruct等映射框架來減少樣板代碼。

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;
}
希望能幫助到你。

TA貢獻1809條經驗 獲得超8個贊
我建議使用@JsonProperty("") 和@JsonAlias("")。
class XXX {
@JsonAlias("accountName")
@JsonProperty("ACCOUNT_NAME")
private String name;
@JsonAlias("routingNumber")
@JsonProperty("ROUTING_NUMBER")
private String routing;}
我希望它有所幫助。

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 分配給該輸入參數。
添加回答
舉報