代码之家  ›  专栏  ›  技术社区  ›  grinferno

在Python中将dict转换为json时转义双引号

  •  -1
  • grinferno  · 技术社区  · 6 年前

    在Python中将dict转换为json时,我需要避开双引号,但我正在努力弄清楚如何转换。

    所以如果我有一个像 {'foo': 'bar'} ,我想将其转换为json并转义双引号-因此它看起来像:

    '{\"foo\":\"bar\"}'

    json.dumps 不是这样的,我试过这样的方法:

    json.dumps({'foo': 'bar'}).replace('"', '\\"') 最终的格式如下:

    '{\\"foo\\": \\"bar\\"}'

    这似乎是一个很简单的问题,但我真的很难解决。

    2 回复  |  直到 6 年前
        1
  •  2
  •   nosklo    6 年前

    你最后一次尝试 json.dumps({'foo': 'bar'}).replace('"', '\\"') 事实上你认为你想要的是正确的。

    你看到这个的原因是:

    '{\\"foo\\": \\"bar\\"}'
    

    因为您正在打印字符串的表示形式。字符串本身对每个引号只有一个反斜杠。如果你使用 print() 在这个结果中,您将看到一个反斜杠

        2
  •  0
  •   Ethan Rogers    6 年前

    你所拥有的确实有用。Python向您展示了它的文字表示。如果你把它保存到一个变量并打印出来,它会显示你在找什么。

    >>> a = json.dumps({'foo': 'bar'}).replace('"', '\\"')
    >>> print a
    {\"foo\": \"bar\"}
    >>> a
    '{\\"foo\\": \\"bar\\"}'