|
Модератор
|
||||||||||||||||
Парсинг json, проблема с хранением11.06.2019, 18:11. Показов 2862. Ответов 13
Здравствуйте, я новичок в java и прошу не кидаться тапками.
Пишу программу которая активно использует json (больше готовые, надо много парсить). Остановил выбор на гугловской бибилиотеке. С самой библиотекой проблем нету. Но возникла ошибка при чтении. Как обнаружил потом что проблема с записью в переменную, так как если вывод сделать на экран то проблем нету. Структура json файла такая: {{a:a}, [{b:b}, {c:c}, ..., {z:z}]}, немного утрировал , но общий вид такой. Сколько элементов в массиве неизвестно и каждый раз разное. В идеале мне надо чтобы работало так, передал имя файла получил на выходе структуру со всеми данными. Вот мои наработки, главный класс (код на другом компе, к нему пока нету доступа, пока в общих чертах):
Только как решить эту проблему не нашел. Если создать конструктор класса и ему передавать размер массива, то результат тот же. Я думал не будет проблем с динамическим массивом классов внутри другого класса. Либо подскажите как можно иначе сохранить эти данные для последующей обработки.
0
|
||||||||||||||||
| 11.06.2019, 18:11 | |
|
Ответы с готовыми решениями:
13
Парсинг JSON в JSON Linked Data с использованием Hydra Java Проблема с хранением иконок в ресурсах
|
|
Автоматизируй это!
|
|||
| 11.06.2019, 19:00 | |||
|
а как вас тапками то не кидать? вы все "я начинающий, помогите мне многопоточный чат/соцсеть/ИИ написать, ни хрена не понимаю".
Даже вот как ты свой псевдокод написал уже о многом говорит -конвенция (не женевская!), слышал? доки Gson уже зачитаны до дыр?
0
|
|||
|
Модератор
|
||
| 11.06.2019, 19:17 [ТС] | ||
|
пишет нечто такое
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Это у меня вторая функция использующая gson. Первая работает без ошибок, в ней нету динамического массива классов. А вот тут проблема вышла. Тут скорее даже проблема не в библиотеке, а в том как правильно десереализованные данные сохранить. Я в начале сообщения привел структуру json файла, считывает без проблем если вывод сделать на экран а не в память. Опишу еще проблему как ее понял я. Есть класс в который считываю данные из json, одна из переменных этого класса является динамическим массивом другого класса. При парсинге заполняется этот динамический массив. При этом заполнении ругается. Не получается создать массив переменного размера внутри класса из вне. Использование конструктора не помогает, так же ругается.
0
|
||
|
Автоматизируй это!
|
|
| 11.06.2019, 19:22 | |
|
0
|
|
|
Модератор
|
|
| 11.06.2019, 20:15 [ТС] | |
|
Сейчас написал простейшую программу которая повторяет ошибку из большой программы.
вот скрины первый вариант для меня предпочтительнее, так как при использовании конструктора мне не известен размер массива, размер массива узнается из метода внутри класса (которого здесь нету и который использует gson для заполнения своих переменных). На скринах класс data класс который хранит данные из jsona, внутри него есть класс который используя gson заполняет переменные. В этом примере вырезал парсинг джейсона а код заполнения вынес отдельно.
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 11.06.2019, 20:37 | |
|
дебаггер изучи, конвенцию изучи.
ошибка из-за того, что в твоем массиве ничего нет (null) и ты это null дереференсишь
0
|
|
|
Автоматизируй это!
|
||
| 11.06.2019, 21:58 | ||
|
1) ты не знаешь конвенции и рановато тебе жсоны парсить, раз не понимаешь простых вещей, например классы нужно с большой буквы называть 2) читаем что такое массив, что такое объект, что такое нуллпоинтер эксепшн 3) читаем что тебе пишут на форуме, что тебе пишет ИДЕ и много думаем ИДЕ тебе прямо пишет, что в массиве по индексу i ничего нет , ибо объект не инициализирован d.ma[i].in=i // в d.ma[i] нет объекта, там нулл, потому при обращении к переменной in падает исключение
1
|
||
|
Модератор
|
|
| 11.06.2019, 22:20 [ТС] | |
|
конвекция конвекция и ни слова о том что такое и хде искать. если нету на русском то идите лесом, англ не понимаю без гугло переводчика.
как хочу так и называю что хочу, на функционал это не влияет 2. читал об этом, не вижу противоречий с моим кодом
0
|
|
|
Автоматизируй это!
|
||||
| 11.06.2019, 22:35 | ||||
|
так что зря начал фыркать, в школе ведь тоже с 1 класса идут постепенно, а не сразу в 5 идут, потому что нужно освоить и понять то, что преподают в начальных, прежде чем идти в 5 класс. Я тебе даже конкретно указал какая ошибка и где. Я могу тебе посоветовать прочесть главу о массивах в любой книге по джава, но вообще лучше всю книгу и с самого начала.
0
|
||||
|
|
|
| 12.06.2019, 11:16 | |
|
alecss131, когда ты инициализируешь массив ma = new mas2[size], ты заполнеяешь его значениями null, т.е. нельзя обратиться к полю какого-либо элемента, ибо все элементы равны null. Надо инициализировать не только массив, но и его элементы
Добавлено через 1 минуту Ну и да, раз ты самостоятельно не в состоянии этого понять, особенно после того, как господа выше тебе это напрямую сказали, то тебе действительно стоит почитать какую-нибудь книжку по java, а также начать учить англецкий, ибо без этого никак
0
|
|
|
Модератор
|
||||||
| 12.06.2019, 13:13 [ТС] | ||||||
|
Проблему решил изменив код на следующий, с массивами типов string, int такого не было
0
|
||||||
|
|
|
| 12.06.2019, 14:56 | |
|
alecss131, массив объектов типа String тоже инициализируется нулями (null), но разница в том, что ты обращаешься именно к определённому объекту, если делаешь присваивание strings[i] = "asdas". Но когда ты обращаешься к массиву, который находится внутри неинициализированного объекта, будет вылетать NullPointerException. А int — эт примитив, поэтому массив типа int инициализируется не значениями null, а просто нулями (0)
0
|
|
| 12.06.2019, 14:56 | |
|
Помогаю со студенческими работами здесь
14
[Newtonsoft.Json] Парсинг JSON-ответа Парсинг json , переменные из json Парсинг JSON'а Парсинг Json
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|