5 回答

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

TA貢獻1868條經(jīng)驗 獲得超4個贊
它似乎沒有任何通用的方法。但是你可以這樣做:
為每個響應(yīng)類型創(chuàng)建多個域類
創(chuàng)建一個單一的標準域類
為每個響應(yīng)類創(chuàng)建映射器以將其映射到標準域類。

TA貢獻1852條經(jīng)驗 獲得超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條經(jīng)驗 獲得超8個贊
我建議使用@JsonProperty("") 和@JsonAlias("")。
class XXX {
@JsonAlias("accountName")
@JsonProperty("ACCOUNT_NAME")
private String name;
@JsonAlias("routingNumber")
@JsonProperty("ROUTING_NUMBER")
private String routing;}
我希望它有所幫助。

TA貢獻1780條經(jīng)驗 獲得超1個贊
我所做的是創(chuàng)建了一個 MyResponse 模型,其中基本上包含您希望獲得的 JSON 響應(yīng)中的所有響應(yīng)字段。MyResponse 具有 c-tor 或接收這些字段或允許設(shè)置它們的設(shè)置器。
然后我創(chuàng)建了某種服務(wù)類 MyService,它可以發(fā)出多個請求并獲取響應(yīng)。
然后你只需在某種經(jīng)理類或任何你稱之為的類中做這樣的事情:
MyService mySer = new MyService();
MyResponse myRes = new MyResponse(
mySer.getDetails(),
mySer.getPicture(),
mySer.getSomethingElse()
);
這些調(diào)用(getDetails、getPicture...)將請求發(fā)送到端點并返回響應(yīng),然后將響應(yīng)映射到 MyResponse 類構(gòu)造函數(shù)的字段中。這是由框架發(fā)生的,因此 MyResponse 具有 FIELD 類型的注釋 @XmlRootElement 和 @XmlAccessorType 以確保發(fā)生這種情況。如果出于某種原因,您不想創(chuàng)建包含 getPicture 結(jié)果的響應(yīng),例如,您只需將 null 分配給該輸入?yún)?shù)。
添加回答
舉報