Доступ к данным из файла JSONPython

Программы на Python
Ответить
Anonymous
 Доступ к данным из файла JSON

Сообщение Anonymous »

Я новичок в JSON. Мой код заключается в извлечении данных с веб-сайта, для которого требуется ключ API. Добыв информацию. Я пытаюсь получить информацию, закодированную в JSON, через этот формат (вот образец):
[{"number":31705,"name":"31705 - CHAMPEAUX (BAGNOLET)","address":"RUE DES CHAMPEAUX (PRES DE LA GARE ROUTIERE) - 93170 BAGNOLET","latitude":48.8645278209514,"longitude":2.416170724425901},{"number":10042,"name":"10042 - POISSONNIÈRE - ENGHIEN","address":"52 RUE D'ENGHIEN / ANGLE RUE DU FAUBOURG POISSONIERE - 75010 PARIS","latitude":48.87242006305313,"longitude":2.348395236282807}]

Как получить доступ к различным данным в коде JSON? Вот код, который я придумал:
import requests

reponse=requests.get('https://api.jcdecaux.com/vls/v1/station ... e}&api_key HTTP/1.1')

Я считаю, что на мой запрос сформулирован ответ, который находится в «папке ответа», отправленной веб-сайтом на мой компьютер:
print(reponse.headers)
print(reponse(2,/'latitude')

Я пытаюсь получить доступ к информации о широте в каждом элементе кода JSON: цифра 2 представляет второй элемент списка, а широта — имя значения, к которому я пытаюсь получить доступ. элемент списка JSON. Но у меня это не получается. Ошибка, которую я получаю, является синтаксической.
Как ее исправить? Я хотел бы получить доступ ко всему значению каждой строки каждого члена объекта «ответ».
ОБНОВЛЕНИЕ № 1:
Мой новый код:
import json
import requests
reponse=requests.get('https://api.jcdecaux.com/vls/v1/station ... 9d5406b3a0} HTTP/1.1')
data = json.loads(response.content)
print(data)

Однако я получаю сообщение об ошибке:
Traceback (most recent call last):
File "/Users/someone/Desktop/TIPE 2016:17/Programme TIPE 2016:2017.py", line 27, in
data = json.loads(response.content)
File "/Users/someone/miniconda3/lib/python3.5/json/__init__.py", line 312, in loads
s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

ОБНОВЛЕНИЕ № 2:
мой новый код:
import json
import requests
reponse=requests.get('https://api.jcdecaux.com/vls/v1/station ... 9d5406b3a0} HTTP/1.1')
data = response.json()
latitude = data[2]['latitude']

Однако я получаю сообщение об ошибке:
Traceback (most recent call last):
File "/Users/someone/Desktop/TIPE 2016:17/Programme TIPE 2016:2017.py", line 30, in
latitude = data[2]['latitude']
KeyError: 2

Означает ли это, что ответ пуст?
ОБНОВЛЕНИЕ № 3:
reponse.content

Ответ следующий:
b'{ "error" : "Unauthorized" }'

В чем проблема?
ОБНОВЛЕНИЕ № 4:
мой новый код:
reponse=requests.get('https://api.jcdecaux.com/vls/v1/station ... 9d5406b3a0} HTTP/1.1')

data = json.loads(response.content.decode('utf-8'))
print(reponse.headers)
print(reponse.content)

Результат:
{'Content-Length': '48', 'Content-Encoding': 'gzip', 'Server': 'Apache-Coyote/1.1', 'Date': 'Fri, 23 Sep 2016 19:39:25 GMT', 'Connection': 'close', 'Content-Type': 'application/json'}
b'{ "error" : "Unauthorized" }'

поэтому ответ на мой запрос не пустой, но у меня нет разрешения на доступ к нему. Как я могу решить эту проблему?
ОКОНЧАТЕЛЬНОЕ ОБНОВЛЕНИЕ:
Новый рабочий код:
import json

import requests

r = requests.get('https://api.jcdecaux.com/vls/v1/station ... 9d5406b3a0')

response_json = r.json()

print (response_json['name'])

и результат:
31705 - CHAMPEAUX (BAGNOLET)


Подробнее здесь: https://stackoverflow.com/questions/396 ... -json-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»