1. Введение в данные json
Назначение: кодирует объект Python в строку JSON и декодирует строку JSON в объект Python.
Модуль json предоставляет API для преобразования объектов Python в памяти в последовательности JSON. Преимущество JSON заключается в том, что он реализован на многих языках, особенно в JavaScript. Он широко используется для связи между веб-серверами и клиентами в REST API, а также полезен для связи между приложениями.
1. Кодирование и декодирование JSON
Собственные типы Python по умолчанию (str, int, float, list, tuple и dict).
import json
data = {
'name': 'ACME',
'shares': 100,
'price': 542.23
}
json_str = json.dumps(data)
print(json_str)
print(type(json_str))
# 保存
with open('data.json', mode='w', encoding='utf-8') as f:
f.write(json_str)
Этот процесс от неупорядоченного словаря к упорядоченной строке называется сериализацией.
1. Проблемы с китайскими иероглифами
import json
data = {
'name': '张三',
'shares': 100,
'price': 542.23
}
# 将字典序列化为json
json_str = json.dumps(data)
# 写入 json 数据
with open('data.json', mode='w', encoding='utf-8') as f:
f.write(json_str)
这时的输出:
# filename:data.json
{
"name": "\u9752\u706f", "shares": 100, "price": 542.23}
解决办法:
# ensure_ascii=False 不使用默认的unicode编码
json_str = json.dumps(data, ensure_ascii=False)
2. Чтение данных
# 读取 json 数据
with open('data.json', 'r', encoding='utf-8') as f:
# 反序列化
data = json.load(f)
# 打印数据
print(data)
print(data['name'])
3. Форматированный вывод
Результат в JSON легче читать. Функция dumps() принимает несколько параметров для вывода более читаемых результатов.
import json
data = {
'a': 'A', 'b': (2, 4), 'c': 3.0}
print('DATA:', repr(data)) # DATA: {'a': 'A', 'b': (2, 4), 'c': 3.0}
unsorted = json.dumps(data)
print('JSON:', json.dumps(data)) # JSON: {"a": "A", "b": [2, 4], "c": 3.0}
объяснять:
Кодирование и последующее повторное декодирование могут не дать точно такой же тип объекта.
В частности, кортежи становятся списками. JSON на самом деле такой же, как словарь в Python.На самом деле легко найти соответствующую связь
между типами данных JSON и типами данных Python .