Python3无法将str转换为dict或json

Python3无法将str转换为dict或json,python,json,python-3.x,dictionary,Python,Json,Python 3.x,Dictionary,但是,我没有加载json(或python dict),而是得到: 因此,我无法理解为什么格式正确的r字符串无法导入json 此外,如果我获取此输出并通过复制/粘贴将其直接写入python,则变量的类型为dict,这表明文本的格式对于python中的dict是正确的。所以我不确定为什么json.loads会失败。您的替换是向后的: 而不是: { "HasItemsWithCount": True, "Collection": [ {

但是,我没有加载json(或python dict),而是得到:

因此,我无法理解为什么格式正确的r字符串无法导入json


此外,如果我获取此输出并通过复制/粘贴将其直接写入python,则变量的类型为dict,这表明文本的格式对于python中的dict是正确的。所以我不确定为什么json.loads会失败。

您的替换是向后的:

而不是:

{
    "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=r.replace(“true”,“true”)
。第一个问题是:为什么这个URL返回类似于JSON的内容,但不是JSON?这不是由维护该页面的人实际记录的JSON格式吗?或者,如果它应该是JSON,但失败了,是因为您编写的代码可以修复,还是因为您的同事编写的代码可以修复,如果您威胁要踢他,还是因为您与之合作的公司编写的代码可以修复,如果您威胁停止向他们付款?因为修复代码以生成正确的JSON要比编写代码来解析几乎不完整的JSON容易得多,也更健壮。考虑到这个小小的示例中有两个问题(
True
for
True
,以及后面的逗号),如果在其他示例中还有其他问题,而您还没有看到,我也不会感到惊讶。特别是如果有任何包含Unicode文本、换行符、引号或任何空值的消息。原始响应是什么样子的,r.text值?与上面相同,但小写的t为true。在您的示例中,您还有一个额外的
,对不起,true最初是true,但是通过引用的行转换为True。
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)
{
    "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 = r.replace("true", "True")
r = r.replace("True", "true")