Сериализация в Datetime, Object - PullRequest
1 голос
/ 28 июня 2019

У меня есть карта в этом формате,

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 ]

1 голос
/ 28 июня 2019

Я был так глуп, задавая этот вопрос ...

map.get ("RequestsServed") даст мне LinkedTreeMap. Я просто должен разобрать его в HashMap по своему выбору.

Сериализация map.get ("RequestsServed") в json и анализ результирующего значения в HashMap даст мне требуемый результат.

Спасибо всем за потраченное время.

0 голосов
/ 28 июня 2019

Я написал фиктивный класс для целей тестирования:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...