我有一个用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支持它。否则,我需要逐个删除引号,这是无聊的。
答案 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
如果你想变得非常酷,你甚至可以使用面料脚本!