r = requests.get(http_get_url, headers=headers)
r = r.text
r = r.replace("true", "True")
z = json.loads(r)
однако, вместо загрузки json (или python dict), я получаю:
Traceback (most recent call last):
File "/home/noir/PycharmProjects/Work_Projects/get_errors.py", line 21, in <module>
get_errors(id)
File "/home/noir/PycharmProjects/Work_Projects/get_errors.py", line 17, in get_errors
z = json.loads(r)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 2 column 26 (char 28)
Результатом print(type(r))
является <class 'str'>
и вывод print(r)
после преобразования "true" в "True":
{
"HasItemsWithCount": True,
"Collection": [
{
"GroupId" : "14",
"Time" : "5/16/18, 5:02 PM",
"File" : "[ESCAPE[]]",
"Message" : "[ESCAPE[Client was restarted during backup, session may be incomplete.]]",
"Count" : "3"
},
]
}
Поэтому я не понимаю, почему правильно отформатированная строка r не может импортироваться в json.
Кроме того, если я возьму этот вывод и напишу его прямо в python с помощью copy/paste, тип переменной будет dict, показывая, что текст отформатирован правильно для dict в Python. Поэтому я не уверен, почему json.loads терпит неудачу.
Ваша замена находится в обратном порядке:
Вместо:
r = r.replace("true", "True")
Пытаться:
r = r.replace("True", "true")
,
в вашем примере