Обрабатывать значения ключей вложенной карты из списка - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть коллекция mon go, которая возвращает вложенную карту, содержимое которой выглядит следующим образом:

Root={id=8080, status=OK, rootSource=[{sid=CITY, value=1234, Date=2011-04-11}, {sid=CTRY, value=4321, Date=2011-04-09}]}

Мне нужно выполнить две отдельные операции над ней:

  1. Извлеките оба значения, т. Е. 1234 и 4321
  2. Проверьте, существуют или нет значения элементов, т. Е. 1234 и 4321.

Я попробовал ниже для первого значения первой части, т.е. 1234, который не работает (следовательно, еще не пробовал вторую часть):

((Map<String, ArrayList<Object>>) (data.get("Root")).get("rootSource")).get("value").toString()

Исключение составляет:

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map

Есть еще одна карта, которая возвращается, как показано ниже:

Root = {id = 9090, status = OK, rootSource = {sid = CITY, value = 9999, Date = 2011-04-11}}

И я обращаюсь с этим как:

((Map<String, Object>) (data.get("Root")).get("rootSource")).get("value").toString()

Но часть списка не работает по очевидным причинам.

Как эффективно выполнить две задачи.

1 Ответ

0 голосов
/ 13 апреля 2020

Сообщение об ошибке довольно ясно, не так ли? В какой-то момент есть массив карт, а не карта карт. Я предполагаю, что это должно работать, чтобы получить первое значение (без приведения):

data.get("Root").get("rootSource")).get(0).get("value").toString()

Какой тип data? Звучит ужасно, когда приходится разыгрывать повсюду с типами c (это означает, что приведение не проверено).

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