Я совершенно новый с 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/stations/{station_number}?contract={contract_name}&api_key HTTP/1.1')
Я считаю, что мой запрос сформулировал ответ, который лежит в «ответ» «папка», которая была отправлена на веб-сайте на мой компьютер:
print(reponse.headers)
print(reponse(2,/'latitude')
Я пытаюсь получить доступ к информации о рельефе в каждом элементе кода json - 2 представляет собой второй элемент списка и ширину - имя значения, которое я пытаюсь получить в элементе списка json. Но я не могу этого сделать. Ошибка, которую я получаю, является синтаксической ошибкой.
Как исправить это? Я хотел бы получить доступ ко всем значениям каждой строки каждого члена ответа объекта.
UPDATE п ° 1:
Мой новый код:
import json
import requests
reponse=requests.get('https://api.jcdecaux.com/vls/v1/stations/{31705}?contract={Paris}&apiKey={0617697a9795f803697de4b9abf9759d5406b3a0} 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 <module>
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'
UPDATE N ° 2:
мой новый код это:
import json
import requests
reponse=requests.get('https://api.jcdecaux.com/vls/v1/stations/{31705}?contract={Paris}&apiKey={0617697a9795f803697de4b9abf9759d5406b3a0} 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 <module>
latitude = data[2]['latitude']
KeyError: 2
Означает ли это, что ответ пуст?
ОБНОВЛЕНИЕ п ° 3:
reponse.content
ответ следующее:
b'{ "error" : "Unauthorized" }'
В чем проблема?
UPDATE п ° 4:
мой новый код:
reponse=requests.get('https://api.jcdecaux.com/vls/v1/stations/{31705}?contract={Paris}&apiKey={0617697a9795f803697de4b9abf9759d5406b3a0} 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" }'
поэтому ответ на мой запрос не пуст, но у меня нет разрешение на доступ к нему. Как я могу это решить?
FINAL UPDATE:
Новый и рабочий код является:
import json
import requests
r = requests.get('https://api.jcdecaux.com/vls/v1/stations/31705?contract=Paris&apiKey=0617697a9795f803697de4b9abf9759d5406b3a0')
response_json = r.json()
print (response_json['name'])
и результат:
31705 - CHAMPEAUX (BAGNOLET)
Что вы пытаетесь достичь с помощью 'печати (réponse (2,/'широта')', потому что ему не хватает закрывающей скобки ')' и '/ 'latitude'' аргумент странно. –
Я пытаюсь получить доступ к информации о рельефе в каждом элементе кода json - 2 представляет второй элемент списка и latitude имя значения, которое я пытаюсь получить в элементе списка json. Но я не могу этого сделать. –
Можете ли вы проверить, что такое значение 'response.content'? –