我有一个文件,里面有:
{
"name": "HOSTNAME_HTTP",
"description": "Custom hostname for http service route. Leave blank for default hostname, e.g.: \u003capplication-name\u003e-\u003cproject\u003e.\u003cdefault-domain-suffix\u003e"
}
当我使用以下方法打开文件时:
with open('data.txt', 'r') as file:
data = file.read()
我将其传递给json.loads,并将数据中的内容替换为:
<application>...</application>
如何防止python json.loads破坏内容中的编码?
发布于 2019-12-30 07:09:17
我找到了一个解决办法:
import json
from json.decoder import JSONDecoder
with open('data.txt', 'r') as file:
data = file.read()
data_without_dump = '{"data":\"' + data + '\"}'
datum_dump = json.dumps(data)
datum = '{"data": ' + datum_dump + '}'
datum_load = json.loads(datum)
datum_load_without_dump = json.loads(data_without_dump)
print(datum_dump)
print(datum)
print(datum_load["data"])
print(datum_load_without_dump["data"])
print(type(datum_dump), type(datum), type(datum_load))
输出:
"\\u003capplication\\u003e.....\\u003c/application\\u003e"
{"data": "\\u003capplication\\u003e.....\\u003c/application\\u003e"}
\u003capplication\u003e.....\u003c/application\u003e
<application>.....</application>
<class 'str'> <class 'str'> <class 'dict'>
我的推理:
json.loads
:将包含JSON文档的str或unicode实例反序列化到Python。json.dumps
:将obj序列化为JSON格式的str。
因此,在级联中使用它们可以得到所需的结果。
https://stackoverflow.com/questions/59524991
复制相似问题