Я хочу превратить строку из json в объект своего класса. Проблема в том, что в классе я использую ArrayList, и поэтому (я думаю) я получаю сообщение об ошибке «Не удается десериализовать массив JSON в класс». Как именно я могу разделить массив и преобразовать его в ArrayList?
@POST
public Response createMocktail(String m){
MocktailDto mocktail = jsonb.fromJson(m, MocktailDto.class);
return Response.ok(mocktailManager.createMocktail(mocktail)).build();
}
JSON-строка:
[
{
"id": 3,
"name": "Mojito",
"zutaten": [
{
"anzahl": 1,
"id": 5,
"name": "Rum"
},
{
"anzahl": 1,
"id": 6,
"name": "GingerAle"
}
]
}
]
JSONObject jsonObj = новый JSONObject(m); не работает, пишет, что конструктор не определен, хотя я видел несколько таких решений




Первый:
MocktailDto[] data = jsonb.fromJson(m, MocktailDto[].class);
data[0];
Второй:
Type listType = new TypeToken<ArrayList<MocktailDto>>(){}.getType();
ArrayList<MocktailDto> data = jsonb.fromJson(m, listType);
data.get(0);
Я добавил конструктор по умолчанию в два класса, и теперь он работает, спасибо
MocktailDto[] mocktailArray = jsonb.fromJson(m, MocktailDto[].class); ArrayList<MocktailDto> mocktailList = new ArrayList<>(Arrays.asList(mocktailArray)); return Response.ok(mocktailManager.createMocktail(mocktailList.get(0))).build();но появляется следующая ошибка: javax.json.bind.JsonbException: невозможно десериализовать свойство zutaten из-за: невозможно создать экземпляр класса: class org.mocktail.Entity.Zutat, конструктор по умолчанию не найден.