Это может быть глупый вопрос, но как проще всего читать и анализировать JSON из URL в Java ?
В Groovy это всего лишь несколько строк кода. Примеры Java, которые я нахожу, смехотворно длинные (и имеют огромный блок обработки исключений).
Все, что я хочу сделать, это прочитать содержание этой ссылки .
json_decode(file_get_contents($url));
и быть готовым!Ответы:
Используя артефакт Maven,
org.json:json
я получил следующий код, который я считаю довольно коротким. Не настолько короткий, насколько это возможно, но все же пригодный для использования.источник
readLine
функция выполнит цикл, и мне придется объединять строки вместо символов, что дороже. Это не сделает код таким коротким, как сейчас. Кроме того, в нотации JSON нет понятия «линии», так почему я должен читать их как таковые?IOUtils.toString(InputStream)
метод Apache commons-io . Это должно избавить вас от некоторых линий и ответственности.InputStream
. Хотя приведенный выше код может быть коротким дляorg.json
использования, обязательно проверьте другие доступные библиотеки - нет необходимости писать более 1-3 строк кода для этой задачи.Вот несколько альтернативных версий с Джексоном (поскольку есть несколько способов, которыми вы можете получать данные как):
И конкретно обычный (IMO) случай, когда вы хотите иметь дело с объектами Java, может быть сделан одним вкладышем:
Другие библиотеки, такие как Gson, также поддерживают однострочные методы; почему многие примеры показывают гораздо более длинные разделы, странно. И что еще хуже, многие примеры используют устаревшую библиотеку org.json; это, возможно, было первым делом, но есть полдюжины лучших альтернатив, так что причин для его использования очень мало.
источник
java.net.URL
но ни один работает, а также множество других источников (File
,InputStream
,Reader
,String
).String
потребует, чтобы содержимое было в формате JSON, а не текстовое кодирование URI / URL для использования.Самый простой способ: использовать gson, собственную библиотеку goto json от google. https://code.google.com/p/google-gson/
Вот образец. Я собираюсь на этот бесплатный веб-сайт геолокации и парсинг JSON и отображение моего почтового индекса. (просто поместите этот материал в основной метод, чтобы проверить это)
источник
rootobj.get("zip_code").getAsString();
Если вы не возражаете против использования пары библиотек, это можно сделать в одну строку.
Включите Apache Commons IOUtils & json.org библиотеки.
источник
Используйте HttpClient, чтобы получить содержимое URL. А затем используйте библиотеку из json.org для анализа JSON. Я использовал эти две библиотеки во многих проектах, и они были надежными и простыми в использовании.
Кроме этого вы можете попробовать использовать Java API библиотеки Facebook API. У меня нет никакого опыта в этой области, но есть вопрос переполнения стека, связанный с использованием API Facebook в Java . Возможно, вы захотите посмотреть на RestFB как на хороший выбор для использования библиотекой.
источник
Я сделал парсер JSON самым простым способом, вот он
этот класс возвращает объект json из URL
и когда вам нужен объект json, вы просто вызываете этот класс и метод в вашем классе Activity
мой код здесь
здесь "ключ JSON" обозначается как ключ в вашем файле JSON
это простой пример файла JSON
Здесь «JSON» является ключом, а «привет» является значением
Это позволит получить значение json для строкового содержимого.
источник
С помощью jersey-client очень просто включить эту зависимость maven:
Затем вызовите его, используя этот пример:
Затем используйте Google Gson для анализа JSON:
источник
Я считаю, что это самый простой способ на сегодняшний день.
Используйте этот метод:
И используйте это так:
источник
Я не уверен, что это эффективно, но это один из возможных способов:
Чтение json из URL-адреса
url.openStream()
и чтение содержимого в строку.создать объект JSON с этой строкой (подробнее на json.org )
источник
Я хотел добавить обновленный ответ здесь, так как (несколько) недавние обновления JDK сделали немного легче читать содержимое HTTP-URL. Как уже говорили другие, вам все равно нужно будет использовать библиотеку JSON для анализа, поскольку JDK в настоящее время не содержит ее. Вот несколько наиболее часто используемых библиотек JSON для Java:
Для извлечения JSON из URL-адреса это, по-видимому, самый простой способ с использованием строго классов JDK (но, вероятно, это не то, что вы хотели бы делать для больших полезных нагрузок), Java 9 представила: https://docs.oracle.com/en/ Java / JavaSE / 11 / документы / API / java.base / Java / IO / InputStream.html # readAllBytes ()
Для анализа JSON с помощью библиотеки GSON, например,
источник
Вот полный пример того, как анализировать содержимое Json. Выполняется Android статистики версии (найдено из исходного кода Android студии здесь , который отображает ссылку здесь ).
Скопируйте полученный вами оттуда файл "Distribution.json" в Res / Raw как запасной вариант.
build.gradle
манифест
MainActivity.kt
В качестве альтернативы зависимости, вы также можете использовать это вместо:
и запасной вариант:
Результат выполнения этого:
источник