我目前正在開展一個專案,該專案需要我接受各種貨幣對并從 API 呼叫回應生成回應物件。我正在使用 jackson 將 JSON 回應映射到 java 物件,然后從生成的 ArrayList 中讀取資料。問題是 JSON 回應可以將不同的貨幣配對字串作為配對資料串列的鍵。以下是典型的回應:
{"error":[],"result":{"XXBTZUSD":[[1647062100,"39091.2","39184.9","39088.9","39139.0","39150.9","59.22447291",161],}[1647063000,"39138.9","39188.4","39138.9","39151.2","39174.2","2.92905848",126]]}
當我嘗試從不同的貨幣對中提取資料時出現問題,因為我的結果物件被硬編碼為提取 JSON 密鑰 XXBTZUSD 的資料。這是我的結果物件的樣子:
public class Result{
@JsonProperty("XXBTZUSD")
public ArrayList<ArrayList<Object>> candles;
public int last;
}
我在想讓@JsonProperty 可變并從json回應中傳遞密鑰以正確拉取我設定的貨幣對,但JsonProperty 需要是一個常量。我能看到的唯一解決方法是為每個貨幣對設定大量不同的類,但這效率低下,需要大約 15 個單獨的類來完成。我對杰克遜圖書館不太熟悉。如果有人對如何解決這個問題有任何想法,我將不勝感激,我一直在努力想辦法解決這個問題。謝謝!
uj5u.com熱心網友回復:
如果鍵可以不同,一種選擇是使用Map. Result不需要您的課程,將結果屬性決議為Map<String, Object>. 然后像這樣提取:
Map<String, Object> result = deserialize();
ArrayList<ArrayList<Object>> arrays = (ArrayList<ArrayList<Object>>) result.get("XXBTZUSD");
只需根據您需要的貨幣對更改屬性。
candles另一種選擇是撰寫自定義反序列化器,無論屬性在 json 中如何命名,都始終將值放入您的欄位中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443566.html
