Python:无法将字符串转换为JSON

2024-04-27 05:04:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在过去的几个小时里,我一直在努力将一个字符串放入JSON dict中json.loads(... 这会引发一个错误:

requestInformation = json.loads(entry["request"]["postData"]["text"])
//throws this error
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:

用re.sub公司('\\','',mystring),mystring.sub(... 没有效果。我的问题串看起来是这样

^{pr2}$

这个字符串的来源是它是来自googlechrome的HAR转储。我认为这些反斜杠是因为它在某个地方被转义,因为大部分HAR文件不包含它们,但它们通常出现在任何标记为“text”的字段中。在

"postData": {
        "mimeType": "application/json",
        "text": "{items:[{n:'PackageChannel.GetUnitsInConfigurationForUnitType',ps:[{n:'unitType',v:\"Analysis\"}]}]}"
}

EDIT我最终放弃了将上面的文本转换为JSON,而是选择了regex。有时斜线出现了,有时它们不是基于我在其中查看的文本,这使得它很难使用。在


Tags: 字符串text文本jsonrequest错误dictentry
2条回答

json模块需要一个字符串,其中键也用双引号括起来

所以下面的字符串可以工作:

mystring = '{"items":[{"n":"PackageChannel.GetUnitsInConfigurationForUnitType", "ps":[{"n":"unitType","v":"ActionTemplate"}]}]}'
myjson = json.loads(mystring)

此函数应该删除双反斜杠并在键的两边加上双引号。在

^{pr2}$

我无法在您编写的第一个字符串上直接测试它,双引号/单引号不匹配,但在上一个代码示例中的字符串上它可以工作。在

在JSON字符串之前需要一个r,或者将所有\替换为\ \

这是有效的:

   import json
    validasst_json = r'''{
        "postData": {
            "mimeType": "application/json",
            "text": "{items:[{n:'PackageChannel.GetUnitsInConfigurationForUnitType',ps:[{n:'unitType',v:\"Analysis\"}]}]}"
        }
    }'''

    txt = json.loads(validasst_json)
    print(txt["postData"]['mimeType'])
    print(txt["postData"]['text'])

相关问题 更多 >