使用转义字符处理JSON

时间:2019-10-03 07:22:26

标签: python json python-3.x

我正在迭代地从数据库中提取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

1 个答案:

答案 0 :(得分:1)

实际上,该错误是由原始字符串引起的。您可以使用以下命令将其转换为普通字符串:

import codecs
json_string = codecs.decode(json_raw, "unicode_escape")

希望有帮助