如何解析JSON字符串中的转义双引号

时间:2018-11-21 20:36:50

标签: python json

我从API中获取了要转换为python字典的JSON字符串。

{
    "title":"size_fit_desc",
    "description":"\u003Cp\u003ERegular Fit\u003Cbr \u002F\u003EThe model (height 5'8\", chest 33\" and waist 28\") is wearing a size M.\u003C\u002Fp\u003E"
}

如果我尝试使用json.loads()加载它,则会给我一个错误

  
    

ValueError:期望的属性名称:第3行第97列(字符136)

  

但是,如果我尝试将此字符串用作原始字符串,那么它将起作用。

s = r"""{
        "title":"size_fit_desc",
        description":"\u003Cp\u003ERegular Fit\u003Cbr \u002F\u003EThe model (height 5'8\", chest 33\" and waist 28\") is wearing a size M.\u003C\u002Fp\u003E"
}"""

我认为在(height 5'8\", chest 33\"处转义存在问题。

如何从API将此json字符串分配给python字符串对象,并使用json.loads(s)将其转换为dict?

json.loads(json.dumps(s))不起作用。

1 个答案:

答案 0 :(得分:0)

在控制台中对此进行的快速测试似乎证明应该对双引号进行两次转义(\\)。 您正在寻找的答案是Python: How to escape double quote inside json string value?

>>> tempStr = '{"title" : "foo", "desc": "foo\\"bar\\""}'
>>> temp2 = json.loads(tempStr)
>>> temp2
{'title': 'foo', 'desc': 'foo"bar"'}

这与this questionthis question中的答案差不多


使用替换:

>>> tmpstr = '{"title" : "foo", "desc": "foo\"bar\""}'
>>> tempStr.replace('"', '\"')
'{"title" : "foo", "desc": "foo\\"bar\\""}'