我有這個 json,因此我需要使用 Jackson 獲取貨幣物件串列(物件本身有一個貨幣名稱欄位 - “USD”、“type”和“show”)。我怎樣才能以簡單明了的方式做到這一點?
歡迎任何幫助
{
...
"result": "OK",
"currency": {
"currencies": {
"LB": {
"type": "A",
"setting": {
"show": true,
},
"access" : true
},
"USD": {
"type": "B",
"setting": {
"show": true,
},
"access" : true
},
"RUB": {
"type": "A",
"setting": {
"show": true,
},
"access" : true
},
....
// and more..
},
...
}
}
uj5u.com熱心網友回復:
"currencies": {
"LB": {
"type": "A",
"setting": {
"show": true,
},
"access" : true
},
"USD": {
"type": "B",
"setting": {
"show": true,
},
"access" : true
},
"RUB": {
"type": "A",
"setting": {
"show": true,
},
"access" : true
},
....
// and more..
},
...
這看起來像一個地圖,而不是一個串列。這對你有幫助嗎?因此,您需要創建Currency類并讓 jackson 將此結構決議為 Map<String, Currency>。請注意,貨幣不會包含識別符號(如“USD”),只有它們在地圖中鍵入才會包含。
uj5u.com熱心網友回復:
您可以將 Json 讀取為 Map<String, Object>。獲得地圖后,您可以遍歷地圖并構建串列。如果您想從 Json 反序列化(讀取)到您的自定義物件串列,您需要將您的 Json 重組為 Json 串列而不是 Json 物件。然后您可以直接將您的 Json 讀入串列。
無論如何,有一個開源庫,它具有基于 Jackson 庫的功能,真正簡化了從 Json 讀取/寫入物件的程序。如果你有一個 json 字串,你所要做的就是:
Map<String, Object> map = JsonUtils.readObjectFromJsonString(jsonString, Map.class);
但它會拋出 IOException,因此您需要處理它。這是Javadoc。該庫稱為 MgntUtils,可以在Maven 工件和Github 上找到(包括 javadoc 和源代碼)
uj5u.com熱心網友回復:
我能夠將物件保存添加到串列中,但是以一種相當不方便的方式,在我看來......
ArrayList<Dto> currencyObjectList = new ArrayList<Dto>();
CurrencyStaticDto obj = null;
JsonNode currencies = mapper.readTree(response.getBody()).get("currencies");
Iterator<Map.Entry<String, JsonNode>> fields = currencies.fields();
while(fields.hasNext()) {
Map.Entry<String, JsonNode> field = fields.next();
String fieldName = field.getKey();
JsonNode fieldValue = field.getValue();
obj = mapper.readValue(fieldValue.toString(),CurrencyStaticDto.class);
obj.setCurrency(fieldName);
currencyObjectList.add(obj);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/409708.html
標籤:
上一篇:如何解決415不支持的媒體型別
下一篇:如何更改訊息型別檢測策略?
