如何在json中处理括号转义

时间:2017-11-22 09:16:18

标签: python json

我有一个用python2加载的json格式字符串,但在json.loads()时会出错。

{"api":"wdetail","v":"5.0","ret":["100"],"data":{"apiStack":[{"name":"esi","value":"{\"api\":\"com.aaa.detail\",\"v\":\"1.0\",\"ret\":[\"11\"]}"}]}}

当加载到json字符串之上时,它会提示错误:ValueError: Expecting , delimiter: line 1 column 87 (char 86),我发现这是因为在"value":"{\"api\"中括号之前有引号,如果我删除引号,则json加载有效。

{"api":"wdetail","v":"5.0","ret":["100"],"data":{"apiStack":[{"name":"esi","value":{\"api\":\"com.aaa.detail\",\"v\":\"1.0\",\"ret\":[\"11\"]}}]}}

关于第一个字符串,如何让json.loads支持它。否则,我需要逐个删除引号,这是无聊的。

2 个答案:

答案 0 :(得分:1)

您可以使用str.replace()从第一个字符串中删除"{}"

new_s = s.replace('"{', '{').replace('}"', '}')  # s is your first string here
data = json.loads(new_s)

答案 1 :(得分:1)

因为我们谈论的是json.loads()意味着你正在阅读文件。 你可以用bash和惊人的sed来做到这一点

sed -i 's/"{/{/g' filename.json && sed -i 's/}"/}/g' filename.json

如果你想变得非常酷,你甚至可以使用面料脚本!