import json json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
fp
- файловый поток,cls=None
- пользовательский подкласс JSONDecoder
,object_hook=None
- пользовательская функция для преобразования каждого литерала словаря,parse_float=None
- пользовательская функция для преобразования литералов, похожих на float
,parse_int=None
- пользовательская функция для преобразования литералов, похожих на int
,parse_constant=None
- пользовательская функция для преобразования литералов -Infinity
, Infinit
и NaN
,object_pairs_hook=None
- пользовательская функция для преобразования литералов, декодированных упорядоченным списком пар,Функция load()
модуля json
преобразует файловый поток fp
, который поддерживает метод file.read()
и содержит формат JSON в объект Python. Десериализация объектов Python выполняется согласно таблице преобразования, представленной в описании класса json.JSONEncoder
.
Аргумент object_hook
это необязательная функция, которая будет вызываться с результатом декодирования каждого объекта JSON dict
. Возвращаемое значение object_hook
будет использоваться вместо соответствующего словаря dict
. Эта функция может быть использована для реализации пользовательских декодеров, например JSON-RPC.
Аргумент object_pairs_hook
это необязательная функция, которая будет вызываться с результатом любого литерала объекта, декодированного упорядоченным списком пар. Возвращаемое значение object_pairs_hook
будет использоваться вместо словаря dict
. Эта функция может быть использована для реализации пользовательских декодеров. Если object_hook
также определен, то значение object_pairs_hook
имеет приоритет.
В случае определения функции parse_float
, она будет вызываться для каждого значения JSON с плавающей точкой. По умолчанию, это эквивалентно float(num_str)
. Можно использовать другой тип данных или парсер для этого значения, например decimal.Decimal
.
В случае определения функции для аргумента parse_int
, она будет вызываться для каждого значения JSON с целым числом. По умолчанию, эквивалентен int(num_str)
. Можно использовать другой тип данных или парсер для этого значения, например float.
В случае определения функции для аргумента parse_constant
, она будет вызываться для строк: -Infinity
, Infinit
, NaN
. Может быть использована для вызова исключений при обнаружении недопустимых чисел в формате JSON. Аргумент parse_constant
больше не вызывается при null
, true
, fasle
.
Чтобы использовать собственный подкласс JSONDecoder
, укажите его с помощью аргумента cls
, в противном случае используется JSONDecoder
.
Дополнительные ключевые аргументы **kw
будут переданы конструктору класса.
Если десериализованные данные не являются допустимым форматом JSON, возникнет исключение JSONDecodeError
.
>>> import json # Сначала создадим файл в формате JSON # что бы потом его прочитать >>> data = [ ... 'foo', ... {'bar': ['baz', None, 1.0, 2], ... 'key': 'value', ... '10': 'ten'}, ... [3, 4, 5, 6] ... ] # Открываем файл на запись >>> with open('data.json', 'w') as fp: # Преобразование объекта Python в данные # формата JSON, а так же запись в файл 'data.json' ... json.dump(data, fp) ... # теперь прочитаем данные из файла 'data.json' >>> with open('data.json', 'r') as fp: # Чтение файла 'data.json' и преобразование # данных JSON в объект Python ... data = json.load(fp) ... # Доступ к данным >>> data[0] # 'foo' >>> data[1]['bar'] # ['baz', None, 1.0, 2] >>> data[1]['bar'][2] # 1.0 >>> data[1]['10'] # 'ten' >>> data[2][3] # 6