我正在迭代地从数据库中提取JSON数据以进行一些处理,如下所示:
{\"Errors\":{\"Number\":232,\"error\":[{\"errorCode\":\"NS-38\",\"errorDescription\":\"Some Error Desc\"}]}}
现在我想使用以下命令将其转换为python字典:
JSON.loads(json_data)
但是我得到这个错误:
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
由于我是从数据库中提取该字符串的,因此这些字符串被视为RAW STRINGS。因此,转义字符可能会导致此问题。
编辑: 我想从数据库中获取的列存储为VARCHAR。样本数据为:
Headers :
Content-Type : application/json;charset=UTF-8
Body :
"{ \"errorStr\" : \"UNAUTHORIZED\" , \"errorDesc\" : \"Request with token absddfsfsdf is a invalid request\"}"
然后我使用正则表达式使用{。*}从上述字符串中获取实际主体。这部分效果很好。
然后,我将regex match的输出发送到json.loads(),每次都失败,这给了我各种各样的错误。
例如。对于上面的JSON(在编辑中),我收到以下错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我不知道问题出在哪里。
非常感谢您的帮助。
此外,使用Python 3.x
答案 0 :(得分:1)
实际上,该错误是由原始字符串引起的。您可以使用以下命令将其转换为普通字符串:
import codecs
json_string = codecs.decode(json_raw, "unicode_escape")
希望有帮助