Мой контроллер возвращает данные JSON, которые имеют Список смешанных типов.Теперь я видел решения на этом сайте, где вы создаете ссылку на тип для самих данных JSON.Тем не менее, это единственный список в JSON, который выдает ошибку.Вот мой контроллер:
String finalName = "json/myPlans.json";
Path path =
Paths.get(getClass().getClassLoader().getResource(finalName).toURI());
byte[] jsonData = Files.readAllBytes(path);
ObjectMapper objectMapper = new ObjectMapper();
MyPlan data = objectMapper.readValue(jsonData, MyPlan.class);
А вот класс MyPlan :
public class MyPlan{
private MyPlanData data;
public MyPlanData getData() {
return data;
}
public void setData(MyPlanData data) {
this.data = data;
}
}
И впоследствии MyPlanData .В этом классе массив columnValues является списком смешанных типов.Вместо того, чтобы делать список объектов, который практически бесполезен, я хотел бы попробовать что-то вроде ниже, где у меня есть список карты строк и целых чисел.Почему это не сработает?
public class MyPlanData {
private int clientId;
private List<String> columnNames;
private List<Map> columnValues;
public int getClientId() {
return clientId;
}
public void setClientId(int clientId) {
this.clientId = clientId;
}
public List<String> getColumnNames() {
return columnsName;
}
public void setColumnNames(List<String> columnNames) {
this.columnNames = columnNames;
}
public List<Map<String, Integer>> getColumnValues() {
return columnValues;
}
public void setColumnValues(List<Map<String, Integer>> columnValues) {
this.columnValues = columnValues;
}
}
А вот JSON:
{
"data": {
"clientId": 22,
"columnName": [
"planCategory",
"planCategoryId"
],
"columnValues": [
[
"Plan One",
1
],
[
"Plan Two",
2
],
[
"Plan Three",
3
],
[
"Plan Four",
4
],
[
"Plan Five",
5
]
]
}
}
Очевидно, это дает следующую ошибку:
Cannot deserialize instance of `java.util.HashMap` out of START_ARRAY token
Так как я могуиспользовать ссылку на тип только в списке ColumnValues ?Спасибо за любые полезные советы.