Мне нужно проанализировать json со списком неоднородных «элементов», то есть каждый из них может иметь разные ключи / структуру, но они имеют один общий ключ (здесь называемый «a»), который дает тип элемента.
{
"items":[
{"a":1, "d":2},
{"a":2, "b":{"c":2}}
]
}
Один из способов, который я подумал сделать, это выбрать строку json для каждого "элемента" из списка по пути "$ .items", используя что-то вроде следующего:
List<String> jsonStrings = JsonPath.parse(json).read("$.items");
так, что первая строка будет '{"a": 1, "d": 2} ", а вторая будет" {"a": 2, "b": {"c": 2 }}». Это так, что я могу продолжать задавать вопросы о внутренних битах, используя сам JsonPath. Это возможно? (Приведенный выше код завершается ошибкой, так как вместо этого JsonPath возвращает список карт.)
Альтернативным решением может быть использование «пути запроса» JsonPath (мой термин) для возврата только «элементов», например, a = 2 в качестве список карт - или список типизированных объектов, которые соответствуют вложенной структуре каждого типа элементов (возможно, общий интерфейс, содержащий ключ типа в качестве поля). Это возможно?