У меня есть ответ JSON с веб-сайта, показанного ниже. Я хочу напечатать ключи data
'value'
и 'datetime'
data
. Я не могу получить доступ к этим двум элементам в ответ JSON.
data= {"parameter_name":"Inst",
"parameter_code":"WL1","data":[
{"value":3.1289999485,"datetime":"2018-07-01T00:00:00+00:00"},
{"datetime":"2018-07-01T00:30:00+00:00","value":3.1859998703},
{"value":3.33099985123,"datetime":"2018-07-01T00:45:00+00:00"},
{"datetime":"2018-07-01T01:15:00+00:00","value":3.22300004959},
{"datetime":"2018-07-01T01:45:00+00:00","value":3.32299995422}]}
мой код до сих пор
for element in len(data['data']):
date = element['datetime']
value = element['value']
print value, date
Я получаю ошибку
for element in len(data['data']):
TypeError: string indices must be integers, not str
То, что вы показали как data
JSON, скорее всего, не является фактическим значением data
. При попытке получить доступ к данным, как Python dict
, он поднимает TypeError: string indices must be integers, not str
. Вероятно, ваши data
JSON выглядят так (обратите внимание на цитаты):
# This is JSON, essentialy a string in the format of a Python dict.
data = """{
"parameter_name": "Inst",
"parameter_code": "WL1",
"data":[
{
"value":3.1289999485,
"datetime":"2018-07-01T00:00:00+00:00"
},
{
"datetime":"2018-07-01T00:30:00+00:00",
"value":3.1859998703
},
{
"value":3.33099985123,
"datetime":"2018-07-01T00:45:00+00:00"
},
{
"datetime":"2018-07-01T01:15:00+00:00",
"value":3.22300004959
},
{
"datetime":"2018-07-01T01:45:00+00:00",
"value":3.32299995422
}
]
}"""
Преобразуйте его в Python dict
с помощью пакета json
стандартной библиотеки Python:
import json
# This converts the JSON string into a Python dict
data = json.loads(data)
Вы можете получить доступ к data
и к их "данным", а затем перебрать их (как вы делали):
for element in data['data']:
print(element['value'], element['datetime'])
Вы можете попробовать следующее:
for element in data['data']:
date = element['datetime']
value = element['value']
print(date)
print(value)
Выход:
3.1289999485
2018-07-01T00:00:00+00:00
3.1859998703
2018-07-01T00:30:00+00:00
3.33099985123
2018-07-01T00:45:00+00:00
3.22300004959
2018-07-01T01:15:00+00:00
3.32299995422
2018-07-01T01:45:00+00:00
Объяснение:
Если вы хотите перебрать элементы в list
, выполните следующие действия:
for element in data['data']
Если вы хотите перебирать список по их индексу:
for index in range(len(data['data'])):
Если у вас есть сетевой ответ в текстовом формате, вам также придется сначала его декодировать. Проверьте https://docs.python.org/2/library/json.html (для python 2) или https://docs.python.org/3.7/library/json.html (для python 3), чтобы увидеть документацию о библиотеке json
. Ты должен:
import json
decodedData = json.loads(data)
а затем переверните декодированные данные, как вы это сделали.