Как мне запросить и обработать JSON с помощью Python?


91

Я пытаюсь отправить запрос GET на URL-адрес, который, как мне известно, возвращает данные в форме JSON с использованием python.

Я хотел бы знать, как отправить этот запрос http://someurl/path/to/jsonи как его разобрать - желательно на Python dict.


2
Могу я попросить вас изменить принятый ответ на ответ с использованием запросов?
webjunkie

Конечно, сегодня я бы так и сделал :)
sa125

Ответы:


130

Для всего, что связано с запросами к URL-адресам, вы можете проверить запросы . В частности, для JSON:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

1
запуск с ним $ python GetJson.py не дает никакого ответа, но то же самое, когда запускается один за другим на python CLI, работает нормально. любая ошибка, которую я сделал, вставляя его в .py? (ma noob in python)
прайагупд 01

1
Проблема, с которой я сталкиваюсь, заключается в том, что сериализаторы DjangoRestFramework не принимают это как действительный json из-за префикса u перед ключами.
wobbily_col

2
@PrayagUpd старый, и вы, вероятно, узнали об этом, но для всех, кто интересуется этим: в .pyфайле необходимо print(r.json())увидеть ответ.
Антти Хаапала

73

Стандартная библиотека Python имеет jsonи urllib2модули.

import json
import urllib2

data = json.load(urllib2.urlopen('http://someurl/path/to/json'))

21
Это старый вопрос, но я хотел присоединиться к webjunkie и указать, что в 2012 году библиотека Requests: HTTP for Humans является потенциально предпочтительным ответом. docs.python-requests.org/en/latest
Питер Хэнли

6
Вам обязательно стоит использовать запросы.
hughdbrown 07

1
Но это по-прежнему полезно, если вы застряли в неэффективной организации, которая затрудняет загрузку библиотек, не являющихся частью стандартной библиотеки
Thruston
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.