如何将人类可读的数据写入 JSON 文件

How to write human-readable data to to a JSON file

当我将文件从 python 导出到 json 文件时,它包含

这样的字符
{"-": "text", "menu": {"-": "node", "id": 2244676, "prev": "[2/40] \u0d2a\u0d4d\u0d30\u0d2f\u0d4b\u0d1c\u0d15 \u0d15\u0d4d\u0d30\u0d3f\u0d2f

我用过

with open('messages.json', 'w') as outfile:
        json.dump(all_messages, outfile, cls=DateTimeEncoder)

在 python 中。如何将其转换为普通的 unicode 文本?

如果您希望输出 JSON 为 human-readable,请使用 UTF-8 编码和 ensure_ascii=False 参数:

with open('messages.json', 'w', encoding='utf8') as outfile:
        json.dump(all_messages, outfile, cls=DateTimeEncoder,ensure_ascii=False)

如果您只想再次读回数据,json.load 会将其转换回 Unicode:

with open('messages.json', encoding='utf8') as infile:
    data = json.load(infile)

简单字符串示例:

>>> s = '[2/40] പ്രയോജക ക്രിയ'
>>> print(json.dumps(s))
"[2/40] \u0d2a\u0d4d\u0d30\u0d2f\u0d4b\u0d1c\u0d15 \u0d15\u0d4d\u0d30\u0d3f\u0d2f"
>>> print(json.dumps(s,ensure_ascii=False))
"[2/40] പ്രയോജക ക്രിയ"

>>> out = json.dumps(s)
>>> out
'"[2/40] \u0d2a\u0d4d\u0d30\u0d2f\u0d4b\u0d1c\u0d15 \u0d15\u0d4d\u0d30\u0d3f\u0d2f"'
>>> json.loads(out)
'[2/40] പ്രയോജക ക്രിയ'