private HashMap<ArrayList<Integer>, book> sections;
Гсон считает, что ваше поле sections
должно быть картой ...
"sections": [
... но вместо этого у вас есть массив элементов, каждый из которых является объектом с chapters
(массив целых чисел) и book
(строка). Map
и HashMap
принимают два обобщенных c аргумента, где первый является ключом, а второй - значением. В JSON ключ почти всегда будет String
, как в этом JSON, представляющем HashMap<String, Integer>
:
{
"abc": 123,
"def": 456
}
Если вы хотите соответствовать JSON, который вы указали вам понадобится sections
, чтобы выглядеть примерно так:
public class Section {
private ArrayList<Integer> chapters;
private String book;
}
private ArrayList<Section> sections;
Однако в моей IDE я установил точку останова на строке, где я использую .fromjson
, и это никогда не проходит мимо этой строки.
Звучит так, будто вы понимаете try
/ catch
в комментариях, но для заголовка вашего вопроса "застрял в строке" и этой цитаты в вашем вопросе, я ' Подведем итоги.
Когда в приложении Java происходит что-то неожиданное или ошибочное («исключение», как в com.google.gson.JsonSyntaxException
), оно будет искать ближайший включающий try
/ catch
блок. Если в текущем методе его нет, он проверит метод, вызвавший текущий метод, а затем метод, вызвавший , метод и т. Д. Приложения веб-сервера часто имеют вложенный try
/ catch
, который приводит к коду ошибки, например 500, и, если вообще ничего не перехватывается, это может привести к завершению программы. Вы можете узнать больше об Исключениях в учебнике Java «Что такое Исключение?» , но появление этого «зависания» в этой строке, вероятно, является результатом того, что он переходит в обработчик исключений по умолчанию и никогда не возвращаться к методу, в котором было «выброшено» исключение.