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

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

序列化為日期時間、對象

序列化為日期時間、對象

皈依舞 2023-02-23 17:06:08
我有這種格式的地圖,HashMap<String, Object> map = {"RequestsServed":{"2019-06-28T00:00:00Z":0.0},"PullRequests":{"2019-06-28T00:00:00Z":0.0}}我的意圖是做map.get("RequestsServed")并獲得一張地圖, {"2019-06-28T00:00:00Z":0.0}而不管其中的鍵值對的數量。我嘗試使用,HashMap<DateTime, Object> result = new ObjectMapper().readValue(SerializationUtils.toJson(map.get("RequestsServed").toString()), HashMap.class);并失敗了。請幫忙。謝謝
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

我問這個問題太蠢了。。。

map.get("RequestsServed") 會給我一個 LinkedTreeMap。我只需要將它解析為我選擇的 HashMap 即可。

將 map.get("RequestsServed") 序列化為 json 并將結果值解析為 HashMap 將輕松為我提供所需的結果。

謝謝大家的寶貴時間。


查看完整回答
反對 回復 2023-02-23
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

我寫了一個虛擬類用于測試目的:


public class TempObject {

    private String date;

    private Double value;


    public TempObject(String date, Double value) {

        this.date = date;

        this.value = value;

    }


    public String getDate() {

        return date;

    }


    public Double getValue() {

        return value;

    }

}

這是您的解決方案:


// Initializing the Map (I'm using LinkedHashMap here for a reason)

Map<String, Object> map = new LinkedHashMap<>();

map.put("RequestsServed", new TempObject("2019-06-28T00:00:00Z", 0.0));

map.put("PullRequests", new TempObject("2019-06-28T00:00:00Z", 0.1));


// Using Collectors.toMap() with mergeFunction (to handle duplicate keys)

Map<String, Object> result = map.values().stream().map(object -> (TempObject) object).collect(Collectors.toMap(TempObject::getDate, TempObject::getValue, (existingValue, newValue) -> newValue));


System.out.println(result); // printing the value of result map: {2019-06-28T00:00:00Z=0.1}

您還可以將此 String 值解析為LocalDateTime.


查看完整回答
反對 回復 2023-02-23
  • 2 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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