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

{"key": "quoted \"value\" and '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相关问答推荐

在pandas DataFrame上运行apply()时如何访问DateTime索引?

只需使用Python在图像中保留 colored颜色 范围区域

customtkinter中使用的这个小部件的名称是什么

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

如何在矩阵上并行化简单循环?

pyautogui.locateOnScreen在Linux上的工作方式有所不同

如何使用上下文管理器创建类的实例?

如何防止Plotly在输出到PDF时减少行中的点数?

拆分pandas列并创建包含这些拆分值计数的新列

Python中的负前瞻性regex遇到麻烦

在Pandas框架中截短至固定数量的列

韦尔福德方差与Numpy方差不同

难以在Manim中正确定位对象

为什么带有dropna=False的groupby会阻止后续的MultiIndex.dropna()工作?

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

多处理队列在与Forking http.server一起使用时随机跳过项目

如何更新pandas DataFrame上列标题的de值?

使用特定值作为引用替换数据框行上的值

具有相同图例 colored颜色 和标签的堆叠子图