在 Python 3.5 中打印一个 JSON
Pretty print a JSON in Python 3.5
我想打印 JSON 文件,但流行的解决方案:How to Python prettyprint a JSON file 不适合我。
代码:
import json, os
def load_data(filepath):
if not os.path.exists(filepath):
print("ACHTUNG! Incorrect path")
return None
with open(filepath, 'r') as file:
return json.load(file)
这个函数没问题 - 它正确地加载了 jason。
但是当我想像这样 pp 时:
def pretty_print_json(data):
print(json.dumps(data, indent=4, sort_keys=True))
return None
if __name__ == '__main__':
pretty_print_json(load_data("data.json")) ,
它序列化字典的值!:
[
{
"Cells": {
"Address": "\u0443\u043b\u0438\u0446\u0430 \u0410\u043a\u0430\u0434\u0435\u043c\u0438\u043a\u0430 \u041f\u0430\u0432\u043b\u043e\u0432\u0430, \u0434\u043e\u043c 10",
"AdmArea": "\u0417\u0430\u043f\u0430\u0434\u043d\u044b\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u043a\u0440\u0443\u0433",
"ClarificationOfWorkingHours": null,
"District": "\u0440\u0430\u0439\u043e\u043d \u041a\u0443\u043d\u0446\u0435\u0432\u043e",
"IsNetObject": "\u0434\u0430",
"Name": "\u0410\u0440\u043e\u043c\u0430\u0442\u043d\u044b\u0439 \u041c\u0438\u0440",
"OperatingCompany": "\u0410\u0440\u043e\u043c\u0430\u0442\u043d\u044b\u0439 \u041c\u0438\u0440",
"PublicPhone": [
{
"PublicPhone": "(495) 777-51-95"
}
有什么问题吗?这是蟒蛇 3.5
json.dumps()
默认生成 ASCII 安全的 JSON。如果您想将非 ASCII 数据保留为 Unicode 代码点,请通过设置 ensure_ascii=False
:
禁用该默认值
print(json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False))
对于您的示例数据,它会生成:
[
{
"Cells": {
"Address": "улица Академика Павлова, дом 10",
"AdmArea": "Западный административный округ",
"ClarificationOfWorkingHours": null,
"District": "район Кунцево",
"IsNetObject": "да",
"Name": "Ароматный Мир",
"OperatingCompany": "Ароматный Мир",
"PublicPhone": [
{
"PublicPhone": "(495) 777-51-95"
}
(在你切断东西的同一点切断)。
我想打印 JSON 文件,但流行的解决方案:How to Python prettyprint a JSON file 不适合我。
代码:
import json, os
def load_data(filepath):
if not os.path.exists(filepath):
print("ACHTUNG! Incorrect path")
return None
with open(filepath, 'r') as file:
return json.load(file)
这个函数没问题 - 它正确地加载了 jason。 但是当我想像这样 pp 时:
def pretty_print_json(data):
print(json.dumps(data, indent=4, sort_keys=True))
return None
if __name__ == '__main__':
pretty_print_json(load_data("data.json")) ,
它序列化字典的值!:
[
{
"Cells": {
"Address": "\u0443\u043b\u0438\u0446\u0430 \u0410\u043a\u0430\u0434\u0435\u043c\u0438\u043a\u0430 \u041f\u0430\u0432\u043b\u043e\u0432\u0430, \u0434\u043e\u043c 10",
"AdmArea": "\u0417\u0430\u043f\u0430\u0434\u043d\u044b\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u043a\u0440\u0443\u0433",
"ClarificationOfWorkingHours": null,
"District": "\u0440\u0430\u0439\u043e\u043d \u041a\u0443\u043d\u0446\u0435\u0432\u043e",
"IsNetObject": "\u0434\u0430",
"Name": "\u0410\u0440\u043e\u043c\u0430\u0442\u043d\u044b\u0439 \u041c\u0438\u0440",
"OperatingCompany": "\u0410\u0440\u043e\u043c\u0430\u0442\u043d\u044b\u0439 \u041c\u0438\u0440",
"PublicPhone": [
{
"PublicPhone": "(495) 777-51-95"
}
有什么问题吗?这是蟒蛇 3.5
json.dumps()
默认生成 ASCII 安全的 JSON。如果您想将非 ASCII 数据保留为 Unicode 代码点,请通过设置 ensure_ascii=False
:
print(json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False))
对于您的示例数据,它会生成:
[
{
"Cells": {
"Address": "улица Академика Павлова, дом 10",
"AdmArea": "Западный административный округ",
"ClarificationOfWorkingHours": null,
"District": "район Кунцево",
"IsNetObject": "да",
"Name": "Ароматный Мир",
"OperatingCompany": "Ароматный Мир",
"PublicPhone": [
{
"PublicPhone": "(495) 777-51-95"
}
(在你切断东西的同一点切断)。