У меня есть следующие JSON данные, извлекаемые из внешнего источника файла.
{
.... More complicated structures within this JSON format above but I only care about the following
"feature": {
"100": {
"DATA1": [
{
"header": "head1",
"someId": "123"
}
]
}
}
}
Я пытаюсь захватить следующую часть как List
"DATA1": [
{
"header": "head1",
"someId": "123"
}
]
но не в состоянии это сделать. Получение следующей ошибки:
Невозможно привести LinkedHashMap к списку.
Метод, который извлекает данные и пытается присвоить их списку
private void getData(){
AllDataFromFile all = someFetchAPI(); // Got every JSON data in the file.
// capturing the portion that I want which I do get.
Map<String, Map<String,Object>> feature = all.getFeature();
Map<String, Object> allData = feature.get("100");
List<Data> dataList = allData.get("DATA1");
}
Нет ошибок компиляции и времени выполнения сверху, но dataList не является списком данных.
Вместо этого это список LinkedHashMap, когда я вижу в режиме отладки. Почему? И как я могу превратить это в Список данных вместо этого?
Поскольку он не отображается в виде списка <Данные>, я не могу выполнить такие операции, как указано ниже.
dataList.get(0).getHeader().
Невозможно привести его в действие и получить ту же ошибку:
Невозможно привести LinkedHashMap к списку.
Пожалуйста, советуйте. Спасибо.
Класс AllDataFromFile
@Getter
@Setter
@JsonInclude(Include.NON_NULL)
public class AllDataFromFile {
private Map<String, Map<String,Object>> feature;
}
Класс данных
@JsonInclude(Include.NON_NULL)
public class Data implements Comparable<Data>, Cloneable{
private String header;
private String someId;
@Override
public int compareTo(Data o) {
int result = // some logic
return result;
}
}
РЕДАКТИРОВАТЬ:
Это формат данных внутри списка
result = {ArrayList@18590} size = 1
0 = {LinkedHashMap@18593} size = 2
"header" -> "header1"
"someId" -> "id1"
Получение следующей ошибки, когда я пытаюсь сопоставить значение объекта, чтобы оно было более точным c следующим образом.
private Map<String, Map<String, List<Data>>> feature;
Способен go вернуться к получению LinkedHashMap (бесполезно, вернуться к квадратной единице), если I go для следующего:
private Map<String, Map<String, List>> feature;
Ошибка:
Не удалось прочитать JSON: класс java .util.LinkedHashMap не является подтипом [простой тип, класс com.aaaaaData] (через цепочку ссылок: com.bbbbbbAllDataFromFile ["feature"] -> java .util.LinkedHashMap ["100"] -> java .util.LinkedHashMap ["DATA1"] -> java .util.ArrayList [0])