Ответ 1
Хотя синтаксис объявления объекта Python очень похож на синтаксис Json, они различны и несовместимы. Помимо проблемы True
/true
, существуют и другие проблемы (например, Json и Python обрабатывают даты совершенно по-разному, а python разрешает комментарии, а Json - нет).
Вместо того, чтобы пытаться рассматривать их как одно и то же, решение состоит в том, чтобы преобразовать один в другой по мере необходимости.
Библиотека json Python может использоваться для анализа (чтения) Json в строке и преобразования его в объект python...
data_from_api = '{...}' # data_from_api should be a string containing your json
info = json.loads(data_from_api)
# info is now a python dictionary (or list as appropriate) representing your Json
Вы также можете конвертировать объекты Python в JSON...
info_as_json = json.dumps(info)
Пример:
# Import the json library
import json
# Get the Json data from the question into a variable...
data_from_api = """{
"response_code": 200,
"train_number": "12229",
"position": "at Source",
"route": [
{
"no": 1, "has_arrived": false, "has_departed": false,
"scharr": "Source",
"scharr_date": "15 Nov 2015", "actarr_date": "15 Nov 2015",
"station": "LKO", "actdep": "22:15", "schdep": "22:15",
"actarr": "00:00", "distance": "0", "day": 0
},
{
"actdep": "23:40", "scharr": "23:38", "schdep": "23:40",
"actarr": "23:38", "no": 2, "has_departed": false,
"scharr_date": "15 Nov 2015", "has_arrived": false,
"station": "HRI", "distance": "101",
"actarr_date": "15 Nov 2015", "day": 0
}
]
}"""
# Convert that data into a python object...
info = json.loads(data_from_api)
print(info)
И второй пример, показывающий, как происходит преобразование True/True. Обратите внимание также на изменения цитаты и то, как комментарий удаляется...
info = {'foo': True, # Some insightful comment here
'bar': 'Some string'}
# Print a condensed representation of the object
print(json.dumps(info))
# Or print a formatted version which is more human readable but uses more bytes
print(json.dumps(info, indent=2))
Выход:
{"bar": "Some string", "foo": true}
{
"bar": "Some string",
"foo": true
}