Чтение из json файла в java

Здравствуйте, я пытался прочитать файл JSON в java с помощью библиотеки json.simple, я прочитал более десятка руководств о том, как это сделать, но в конце концов способ написания моего файла JSON вызывает у меня много проблем .

{
"0": {
    "POI": "43df8ad6f964a520b92e1fe3",
    "latitude": 40.731356448341,
    "longitude": -73.988671302795,
    "photos": "https://irs3.4sqi.net/img/general/612x612/343235_eezF7KZ55QpdVVNuMTFOO86bikjUbmrxb1IEuf2C1uI.jpg",
    "POI_category_id": "Arts & Entertainment",
    "POI_name": "AMC Loews Village 7"
  },
  "1": {
    "POI": "4bfec352daf9c9b64038f9ef",
    "latitude": 40.75358312925,
    "longitude": -74.214450350548,
    "photos": "https://irs1.4sqi.net/img/general/540x720/c5xfqE_ajHOZb1LBtUBEdYNlc9aQ12EoPcavI_dVkDw.jpg",
    "POI_category_id": "Food",
    "POI_name": "Wendy's"
  }
...
}

Моя проблема в том, что я понятия не имею, как я могу получить первое значение «0»:, «1»: без ключа рядом, чтобы я мог использовать функцию .get("KEY"). Я пробовал что-то вроде jsobj.get(i), а затем каждый раз увеличивал значение i на единицу, но это вообще не сработало.

Это моя первая попытка сделать что-то с json, поэтому я понятия не имею, правильно ли то, что я пытаюсь сделать. заранее спасибо

Какую библиотеку вы используете?

Mạnh Quyết Nguyễn 23.05.2018 11:47

Если вы используете библиотеку org.json для представления JSON, вы можете прочитать весь файл и сохранить содержимое в StringBuilder, а затем использовать этот StringBuilder.toString() для создания экземпляра new JSONObject(StringBuilder.toString()).

Maxime Flament 23.05.2018 11:49

«Я пробовал что-то вроде jsobj.get (i), а затем каждый раз увеличивал значение i на единицу, но это вообще не сработало». - Это должно работать нормально, но помните, что в этом случае i должен быть строкой. Можете ли вы включить минимальный воспроизводимый пример, чтобы мы могли видеть, что происходит?

Michael Berry 23.05.2018 11:49

org.json.simple - это библиотека, которую я использую @ MạnhQuyếtNguyễn

Sakis 23.05.2018 11:51

@ berry120 из любопытства, я попробовал это сам буквально 2 минуты назад, и это вроде сработало, но я не знаю, как мне лучше всего извлечь данные: /

Sakis 23.05.2018 11:52

Что вы имеете в виду под «Видом работы»?

Michael Berry 23.05.2018 11:53

Ключ должен быть строкой.

Vinit Mehta 23.05.2018 11:54

нет, он работал нормально, он просто печатал данные в другом порядке. Виноват

Sakis 23.05.2018 11:55

Другой порядок нравится?

Vinit Mehta 23.05.2018 11:57

.get (String.valueOf (i)) в порядке, что было бы лучше всего для просмотра данных. Приведение его к JSONArray невозможно из того, что я читал.

Sakis 23.05.2018 12:01

спасибо всем за вашу помощь

Sakis 23.05.2018 12:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
11
1 415
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что ваш JSON хранится в строке с именем json:

JSONObject obj = (JSONObject)new JSONParser().parse(json);
JSONObject ele;
for(int i=0 ; (ele=(JSONObject)obj.get(Integer.toString(i)))!=null ; i++) {
    System.out.println("Index " + i + ":");
    System.out.println(ele.get("POI"));
    System.out.println(ele.get("latitude"));
    System.out.println(ele.get("longitude"));
    ///etc.
}

Другие вопросы по теме