Разбор данных JSON в Python3

JSON (JavaScript Object Notation) — это легковесный формат обмена данными.

Если вы еще не понимаете JSON, вы можете сначала прочитать нашУчебник по JSON。

Python3 может использовать модуль json для кодирования и декодирования данных JSON. Он содержит две функции:

  • json.dumps(): Кодирует данные.
  • json.loads(): Декодирует данные.

В процессе кодирования/декодирования json встроенные типы Python и типы json преобразуются друг в друга. Конкретные соответствия преобразований следующие:

Таблица соответствия преобразования типов Python в JSON при кодировании:

Python JSON
dict объект
list, tuple array
str string
int, float, перечисления, производные от int и float число
True истина
False false
Отсутствует null

Таблица соответствия преобразования при декодировании JSON в типы Python:

JSON Python
объект dict
array list
string str
число (int) int
число (real) float
истина True
false False
null Отсутствует

Примеры json.dumps и json.loads

В следующем примере демонстрируется преобразование структур данных Python в JSON:

Пример (Python 3.0+)

#!/usr/bin/python3 import json⟦⟧# Преобразование словаря Python в объект JSON # Python dictionary type converted to JSON object data = { 'no' : 1, 'name' : 'Пример', 'url⟦⟧https://www.example.com' : 'https://www.example.com' } json_str = json.dumps(data) print ("Исходные данные Python:", repr(data)) print ("Объект JSON:", json_str)

Выполнение приведённого выше кода выводит следующий результат:

Python 原始数据: {'no': 1, 'name': 'Example', 'url': 'https://www.example.com'}
JSON 对象: {"no": 1, "name": "Example", "url": "https://www.example.com"}

Из результата вывода видно, что после кодирования простые типы очень похожи на свой исходный вывод repr().

Продолжая предыдущий пример, мы можем преобразовать строку, закодированную в JSON, обратно в данные Python:

Пример (Python 3.0+)

#!/usr/bin/python3 import json⟦⟧# Преобразование словаря Python в объект JSON # Python dictionary type converted to JSON object data1 = { 'no' : 1, 'name' : 'Example', 'url' : 'http://www.example.com' } json_str = json.dumps(data1) print ("Исходные данные Python:", repr(data1)) print ("Объект JSON:", json_str) # Преобразовать объект JSON в словарь Python data2 = json.loads(json_str) print ("data2['name']: ", data2['name']) print ("data2['url']: ", data2['url'])

Выполнение приведённого выше кода выводит следующий результат:

Python 原始数据: {'name': 'Example', 'no': 1, 'url': 'http://www.example.com'}
JSON 对象: {"name": "Example", "no": 1, "url": "http://www.example.com"}
data2['name']:  Example
data2['url']:  http://www.example.com

Если вы имеете дело с файлом, а не со строкой, можно использоватьjson.dump()иjson.load()для кодирования и декодирования данных JSON. Например:

Пример (Python 3.0+)

# Записать данные JSON with open('data.json', 'w') as f: json.dump(data, f) # Прочитать данные with open('data.json', 'r') as f: data = json.load(f)

Для получения дополнительной информации обратитесь к:https://docs.python.org/3/library/json.html Другие расширения