【发布时间】:2020-11-23 09:22:55
【问题描述】:
我有一个包含以下内容的 Json 文件 temp.json
{
"response": {
"statusCode": 202,
"headers": [
[
"Content-Type",
"application/json;charset\u003dutf-8"
]
]
}
}
现在,当我打印内容时,它会按原样打印
>>> f = open("temp.json")
>>> print(f.read())
{
"response": {
"statusCode": 202,
"headers": [
[
"Content-Type",
"application/json;charset\u003dutf-8"
]
]
}
}
>>> f.close()
但是当我执行 json.load() 时,所有的 "\u003d" 代码都变成了它们的值,我们可以在 Content-Type 之前的 utf-8 它更改为 =
>>> import json
>>> f = open("temp.json")
>>> print(json.load(f))
{'response': {'statusCode': 202, 'headers': [['Content-Type', 'application/json;charset=utf-8']]}}
>>> f.close()
是否有任何标志或任何其他方式可以按原样加载它们?
python 版本 3.9.0
【问题讨论】:
-
“按原样加载”是什么意思? JSON 是数据的表示法,在这种表示法中
\u003d表示=,就像{}表示dict。要么不解析 JSON,即f.read(),要么解析 JSON,即json.load(f)。 -
“加载” JSON
"\u003d="所需的结果是什么?你想要"\u003d="、"=="还是"\u003d\u003d"? -
我在这里要做的是,我将加载文件,使用正则表达式更新特定键的值,然后将内容转储回同一个文件中。完成此操作后,文件中的所有
\u003d都更改为=。我不想更改文件中的任何其他内容,除了给定键的值。 -
这是技术要求(例如,输出的某些接收器会阻塞)还是个人偏好?就 JSON 而言,
=和\u003d是等价的,可以互换的。 -
这是个人喜好,使用这些文件的java应用程序在你说的更改后没有任何问题。
标签: python json unicode-string