python - 如何在 python 中解析 json 字符串而不修改它?

标签 python json

这无疑是一个有效的 json 字符串:

{"key": "引用\"value\"和 'value'"}

...由于值中的 '",这两者均无效:

json.parse("{"key": "quoted \"value\" and 'value'"}")
json.parse('{"key": "quoted \"value\" and 'value'"}')
> SyntaxError: invalid syntax

但是,使用三引号也是无效的:

json.loads("""{"key": "quoted \"value\" and 'value'"}""")
> JSONDecodeError: Expecting ',' delimiter: line 1 column 18 (char 17)

我明白了,原因是 \" 通过多行文字呈现为 ":

print("""{"key": "quoted \"value\" and 'value'"}""")
> {"key": "quoted "value" and 'value'"} <--- invalid json

那么你如何做到这一点呢?

在简单的情况下,我可以手动修复 json,但在复杂的情况下(数百行 json),这是不合理的。

我试图解决的问题是通过 jupyter 笔记本手动重播请求;您在 Chrome 中复制请求正文,然后希望通过将请求粘贴到 jupyter 笔记本的单元格中来重播它。

最佳答案

您可以在此处使用原始三引号字符串,它将反斜杠视为文字字符:

json.loads(r"""{"key": "quoted \"value\" and 'value'"}""")
> {'key': 'quoted "value" and \'value\''}

关于python - 如何在 python 中解析 json 字符串而不修改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72052015/

相关文章:

python - 在后台运行 python

java - Gson 的 RuntimeTypeAdapterFactory 未序列化类型

java - Jackson 反序列化混合数组

json - eBay API findItemsByKeywords 操作返回 'Page Limit exceeded. Items can be fetched only for the first 100 pages' 错误

python - 我如何了解我是否准确地解析了网站?

python - ThreadPoolExecutor 位置参数太多

python - 在 python 中使用 if 条件列表理解

python - 在 python 中将列表附加到列表时出现问题

javascript - 遍历 json 并获取每个第 x 个对象值

javascript - JavaScript 对象的性能相关问题