json — кодировщик и декодировщик JSON
Исходный код: Lib/json/__init__.py
JSON (JavaScript Object Notation), определённый в RFC 7159 (который заменяет RFC 4627) и ECMA-404, — это лёгкий формат обмена данными, вдохновлённый синтаксисом литералов объектов JavaScript (хотя он не является строгим подмножеством JavaScript [1] ).
Примечание
Термин «объект» в контексте обработки JSON в Python может быть неоднозначным. Все значения в Python являются объектами. В JSON объектом называется любая структура данных, заключённая в фигурные скобки, аналогично словарю Python.
Предупреждение
Будьте осторожны при разборе данных JSON из недоверенных источников. Вредоносная строка JSON может заставить декодер использовать значительные ресурсы процессора и памяти. Рекомендуется ограничивать размер разбираемых данных.
Этот модуль предоставляет API, знакомый пользователям стандартных библиотечных модулей marshal и pickle.
Кодирование базовых иерархий объектов Python:
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
Компактное кодирование:
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
Форматированный вывод:
>>> import json
>>> print(json.dumps({'6': 7, '4': 5}, sort_keys=True, indent=4))
{
"4": 5,
"6": 7
}
Настройка кодирования объектов JSON:
>>> import json
>>> def custom_json(obj):
... if isinstance(obj, complex):
... return {'__complex__': True, 'real': obj.real, 'imag': obj.imag}
... raise TypeError(f'Cannot serialize object of {type(obj)}')
...
>>> json.dumps(1 + 2j, default=custom_json)
'{"__complex__": true, "real": 1.0, "imag": 2.0}'
Декодирование JSON:
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
Настройка декодирования объектов JSON:
>>> import json
>>> def as_complex(dct):
... if '__complex__' in dct:
... return complex(dct['real'], dct['imag'])
... return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
... object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
Расширение JSONEncoder:
>>> import json >>> class ComplexEncoder(json.JSONEncoder): ... def default(self, obj): ... if isinstance(obj, complex): ... return [obj.real, obj.imag] ... # Let the base class default method raise the TypeError ... return super().default(obj) ... >>> json.dumps(2 + 1j, cls=ComplexEncoder) '[2.0, 1.0]' >>> ComplexEncoder().encode(2 + 1j) '[2.0, 1.0]' >>> list(ComplexEncoder().iterencode(2 + 1j)) ['[2.0', ', 1.0', ']']
Использование json.tool из командной оболочки для проверки и форматированного вывода:
$ echo '{"json":"obj"}' | python -m json.tool
{
"json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Подробную документацию см. в разделе Интерфейс командной строки.
Примечание
JSON является подмножеством YAML 1.2. JSON, создаваемый этим модулем с настройками по умолчанию (в частности, со значением separators по умолчанию), также является подмножеством YAML 1.0 и 1.1. Поэтому этот модуль можно использовать и как сериализатор YAML.
Примечание
Кодировщики и декодировщики этого модуля по умолчанию сохраняют порядок элементов при вводе и выводе. Порядок теряется только в том случае, если базовые контейнеры не упорядочены.
Основное использование
-
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) -
Сериализует obj в поток в формате JSON и записывает его в fp (объект, подобный файлу, поддерживающий
.write()), используя эту таблицу преобразования Python в JSON.Примечание
В отличие от
pickleиmarshal, JSON не является протоколом с кадрированием, поэтому попытка сериализовать несколько объектов повторными вызовамиdump()с использованием одного и того же fp приведёт к созданию недопустимого файла JSON.- Параметры:
-
- obj (object) – Объект Python для сериализации.
-
fp (объект, подобный файлу) – Объект, подобный файлу, в который будет сериализован obj. Модуль
jsonвсегда создаёт объектыstr, а неbytes, поэтомуfp.write()должен поддерживать вводstr. -
skipkeys (bool) – Если
True, ключи, тип которых не является базовым (str,int,float,bool,None), будут пропущены вместо вызова исключенияTypeError. По умолчаниюFalse. -
ensure_ascii (bool) – Если
True(значение по умолчанию), гарантируется, что все входящие символы, не относящиеся к ASCII, будут экранированы. ЕслиFalse, эти символы будут выведены без изменений. -
check_circular (bool) – Если
False, проверка циклических ссылок для типов-контейнеров пропускается, а циклическая ссылка приведёт кRecursionError(или к более серьёзным последствиям). По умолчаниюTrue. -
allow_nan (bool) – Если
False, сериализация выходящих за допустимый диапазон значенийfloat(nan,inf,-inf) приведёт кValueErrorв строгом соответствии со спецификацией JSON. ЕслиTrue(значение по умолчанию), используются соответствующие им значения JavaScript (NaN,Infinity,-Infinity). -
cls (подкласс
JSONEncoder) – Если задан, используется пользовательский кодировщик JSON с переопределённым методомdefault()для сериализации в пользовательские типы данных. ЕслиNone(значение по умолчанию), используетсяJSONEncoder. -
indent (int | str | None) – Если задано положительное целое число или строка, элементы массивов JSON и члены объектов будут выводиться в форматированном виде с указанным уровнем отступа. Положительное целое число задаёт количество пробелов для каждого уровня; строка (например,
"\t") используется для отступа на каждом уровне. Если значение равно нулю, отрицательное или""(пустая строка), вставляются только символы новой строки. ЕслиNone(значение по умолчанию), используется наиболее компактное представление. -
separators (tuple | None) – Кортеж из двух элементов:
(item_separator, key_separator). ЕслиNone(значение по умолчанию), параметр separators по умолчанию равен(', ', ': '), если indent равноNone, и(',', ': ')в противном случае. Для наиболее компактного JSON укажите(',', ':'), чтобы убрать пробельные символы. -
default (вызываемый объект | None) – Функция, вызываемая для объектов, которые иначе невозможно сериализовать. Она должна вернуть представление объекта, кодируемое в JSON, или вызвать исключение
TypeError. ЕслиNone(значение по умолчанию), вызываетсяTypeError. -
sort_keys (bool) – Если
True, словари будут выведены с сортировкой по ключу. По умолчаниюFalse.
Изменено в версии 3.2: Помимо целых чисел, для indent разрешено использовать строки.
Изменено в версии 3.4: Если indent не равен
None, в качестве значения по умолчанию используется(',', ': ').Изменено в версии 3.6: Все необязательные параметры теперь доступны только по ключевым словам.
-
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) -
Сериализует obj в
strв формате JSON, используя эту таблицу преобразования. Аргументы имеют то же значение, что и вdump().Примечание
Ключи в парах «ключ/значение» JSON всегда имеют тип
str. При преобразовании словаря в JSON все его ключи преобразуются в строки. В результате, если преобразовать словарь в JSON, а затем обратно в словарь, полученный словарь может отличаться от исходного. То естьloads(dumps(x)) != x, если x содержит ключи не строкового типа.
-
json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) -
Десериализует fp в объект Python, используя таблицу преобразования JSON в Python.
- Параметры:
-
-
fp (объект, подобный файлу) – Текстовый файл или двоичный файл, поддерживающий
.read()и содержащий документ JSON для десериализации. -
cls (подкласс
JSONDecoder) – Если задан, используется пользовательский декодировщик JSON. Дополнительные аргументы ключевых слов дляload()передаются конструктору cls. ЕслиNone(значение по умолчанию), используетсяJSONDecoder. -
object_hook (вызываемый объект | None) – Если задан, функция вызывается с результатом декодирования любого литерала объекта JSON (значением
dict). Возвращаемое этой функцией значение будет использовано вместоdict. Эта возможность может использоваться для реализации пользовательских декодировщиков, например для определения классов в JSON-RPC. По умолчаниюNone. -
object_pairs_hook (вызываемый объект | None) – Если задан, функция вызывается с результатом декодирования любого литерала объекта JSON в виде упорядоченного списка пар. Возвращаемое этой функцией значение будет использовано вместо
dict. Эта возможность может использоваться для реализации пользовательских декодировщиков. Если задан также object_hook, приоритет имеет object_pairs_hook. По умолчаниюNone. -
parse_float (вызываемый объект | None) – Если задан, функция вызывается со строкой каждого декодируемого числа с плавающей точкой в JSON. Если
None(значение по умолчанию), эквивалентноfloat(num_str). Это можно использовать для разбора чисел с плавающей точкой JSON в пользовательские типы данных, напримерdecimal.Decimal. -
parse_int (вызываемый объект | None) – Если задан, функция вызывается со строкой каждого декодируемого целого числа JSON. Если
None(значение по умолчанию), эквивалентноint(num_str). Это можно использовать для разбора целых чисел JSON в пользовательские типы данных, напримерfloat. -
parse_constant (вызываемый объект | None) – Если задан, функция вызывается с одной из следующих строк:
'-Infinity','Infinity'или'NaN'. Это можно использовать для вызова исключения при обнаружении недопустимых чисел JSON. По умолчаниюNone.
-
fp (объект, подобный файлу) – Текстовый файл или двоичный файл, поддерживающий
- Вызывает исключения:
-
- JSONDecodeError – Если десериализуемые данные не являются допустимым документом JSON.
- UnicodeDecodeError – Если десериализуемые данные не содержат данных в кодировке UTF-8, UTF-16 или UTF-32.
Изменено в версии 3.1:
- Добавлен необязательный параметр object_pairs_hook.
- Параметр parse_constant больше не вызывается для значений ‘null’, ‘true’, ‘false’.
Изменено в версии 3.6:
- Все необязательные параметры теперь доступны только по ключевым словам.
- Теперь fp может быть двоичным файлом. Входные данные должны иметь кодировку UTF-8, UTF-16 или UTF-32.
Изменено в версии 3.11: Теперь значение parse_int по умолчанию —
int()— ограничивает максимальную длину строки целого числа с помощью ограничения длины преобразования строки в целое число интерпретатора, чтобы помочь предотвратить атаки типа «отказ в обслуживании».
-
json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) -
Идентичен
load(), но вместо объекта, подобного файлу, десериализует s (экземплярstr,bytesилиbytearray, содержащий документ JSON) в объект Python, используя эту таблицу преобразования.Изменено в версии 3.6: Теперь s может иметь тип
bytesилиbytearray. Входные данные должны иметь кодировку UTF-8, UTF-16 или UTF-32.Изменено в версии 3.9: Аргумент ключевого слова encoding удалён.
Кодировщики и декодировщики
-
class json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None) -
Простой декодировщик JSON.
По умолчанию при декодировании выполняются следующие преобразования:
JSON
Python
object
dict
array
list
string
str
number (int)
int
number (real)
float
true
True
false
False
null
None
Также распознаёт
NaN,Infinityи-Infinityкак соответствующие им значенияfloat, что не предусмотрено спецификацией JSON.object_hook — необязательная функция, которая вызывается с результатом декодирования каждого объекта JSON; её возвращаемое значение используется вместо соответствующего
dict. Это можно использовать для реализации пользовательской десериализации (например, для определения классов в JSON-RPC).object_pairs_hook — необязательная функция, которая вызывается с результатом декодирования каждого объекта JSON в виде упорядоченного списка пар. Возвращаемое значение object_pairs_hook используется вместо
dict. Эта возможность может использоваться для реализации пользовательских декодировщиков. Если задан также object_hook, приоритет имеет object_pairs_hook.Изменено в версии 3.1: Добавлена поддержка object_pairs_hook.
parse_float — необязательная функция, которая вызывается со строкой каждого декодируемого числа с плавающей точкой в JSON. По умолчанию она эквивалентна
float(num_str). Это можно использовать, чтобы обрабатывать числа с плавающей точкой JSON с помощью другого типа данных или анализатора (например,decimal.Decimal).parse_int — необязательная функция, которая вызывается со строкой каждого декодируемого целого числа JSON. По умолчанию она эквивалентна
int(num_str). Это можно использовать, чтобы обрабатывать целые числа JSON с помощью другого типа данных или анализатора (например,float).parse_constant — необязательная функция, которая вызывается с одной из следующих строк:
'-Infinity','Infinity','NaN'. Это можно использовать для вызова исключения при обнаружении недопустимых чисел JSON.Если strict имеет значение false (по умолчанию
True), внутри строк допускаются управляющие символы. В данном контексте к управляющим относятся символы с кодами от 0 до 31 включительно, в том числе'\t'(табуляция),'\n','\r'и'\0'.Если десериализуемые данные не являются допустимым документом JSON, будет вызвано исключение
JSONDecodeError.Изменено в версии 3.6: Теперь все параметры доступны только по ключевым словам.
-
decode(s) -
Возвращает представление s в Python (экземпляра
str, содержащего документ JSON).Если указанный документ JSON недопустим, будет вызвано исключение
JSONDecodeError.
-
raw_decode(s) -
Декодирует документ JSON из s (строки
str, начинающейся с документа JSON) и возвращает кортеж из двух элементов: представление в Python и индекс в s, на котором заканчивается документ.Этот метод можно использовать для декодирования документа JSON из строки, в конце которой могут находиться лишние данные.
-
-
class json.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None) -
Расширяемый кодировщик JSON для структур данных Python.
По умолчанию поддерживаются следующие объекты и типы:
Python
JSON
dict
object
list, tuple
array
str
string
int, float, перечисления на основе int и float
number
True
true
False
false
None
null
Изменено в версии 3.4: Добавлена поддержка классов Enum на основе int и float.
Чтобы расширить распознавание и на другие объекты, создайте подкласс и реализуйте метод
default()с другим методом, который по возможности возвращает сериализуемый объект дляo; в противном случае он должен вызвать реализацию суперкласса (чтобы вызвать исключениеTypeError).Если skipkeys имеет значение false (значение по умолчанию), при попытке кодирования ключей, тип которых не является
str,int,float,boolилиNone, будет вызвано исключениеTypeError. Если skipkeys имеет значение true, такие элементы просто пропускаются.Если ensure_ascii имеет значение true (значение по умолчанию), гарантируется, что все входящие символы, не относящиеся к ASCII, будут экранированы. Если ensure_ascii имеет значение false, эти символы будут выведены без изменений.
Если check_circular имеет значение true (значение по умолчанию), во время кодирования списки, словари и пользовательские кодируемые объекты проверяются на наличие циклических ссылок, чтобы предотвратить бесконечную рекурсию (которая привела бы к
RecursionError). В противном случае такая проверка не выполняется.Если allow_nan имеет значение true (значение по умолчанию),
NaN,Infinityи-Infinityбудут закодированы именно так. Такое поведение не соответствует спецификации JSON, но согласуется с поведением большинства кодировщиков и декодировщиков на основе JavaScript. В противном случае при кодировании таких чисел с плавающей точкой будет вызвано исключениеValueError.Если sort_keys имеет значение true (по умолчанию:
False), вывод словарей будет отсортирован по ключу; это полезно для регрессионных тестов, чтобы результаты сериализации JSON можно было сравнивать каждый день.Если indent — неотрицательное целое число или строка, элементы массивов JSON и члены объектов будут выводиться в форматированном виде с указанным уровнем отступа. При уровне отступа 0, отрицательном значении или
""вставляются только символы новой строки.None(значение по умолчанию) выбирает наиболее компактное представление. Положительное целое число задаёт количество пробелов для каждого уровня. Если indent — строка (например,"\t"), она используется для отступа на каждом уровне.Изменено в версии 3.2: Помимо целых чисел, для indent разрешено использовать строки.
Если параметр separators задан, он должен быть кортежем
(item_separator, key_separator). По умолчанию используется(', ', ': '), если indent равноNone, и(',', ': ')в противном случае. Чтобы получить наиболее компактное представление JSON, следует указать(',', ':'), чтобы убрать пробельные символы.Изменено в версии 3.4: Если indent не равно
None, в качестве значения по умолчанию используется(',', ': ').Если параметр default задан, он должен быть функцией, вызываемой для объектов, которые иначе невозможно сериализовать. Она должна вернуть представление объекта, кодируемое в JSON, или вызвать исключение
TypeError. Если параметр не задан, вызывается исключениеTypeError.Изменено в версии 3.6: Теперь все параметры доступны только по ключевым словам.
-
default(o) -
Реализуйте этот метод в подклассе так, чтобы он возвращал сериализуемый объект для o или вызывал реализацию базового класса (чтобы вызвать исключение
TypeError).Например, для поддержки произвольных итераторов можно реализовать
default()следующим образом:def default(self, o): try: iterable = iter(o) except TypeError: pass else: return list(iterable) # Let the base class default method raise the TypeError return super().default(o)
-
encode(o) -
Возвращает строковое представление структуры данных Python o в формате JSON. Например:
>>> json.JSONEncoder().encode({"foo": ["bar", "baz"]}) '{"foo": ["bar", "baz"]}'
-
iterencode(o) -
Кодирует указанный объект o и выдаёт каждое строковое представление по мере его готовности. Например:
for chunk in json.JSONEncoder().iterencode(bigobject): mysocket.write(chunk)
-
Исключения
-
exception json.JSONDecodeError(msg, doc, pos) -
Подкласс
ValueErrorсо следующими дополнительными атрибутами:-
msg -
Неформатированное сообщение об ошибке.
-
doc -
Разбираемый документ JSON.
-
pos -
Индекс начала в doc, где произошёл сбой разбора.
-
lineno -
Строка, соответствующая pos.
-
colno -
Столбец, соответствующий pos.
Добавлено в версии 3.5.
-
Соответствие стандартам и взаимодействие
Формат JSON определён документами RFC 7159 и ECMA-404. В этом разделе подробно описан уровень соответствия этого модуля RFC. Для простоты подклассы JSONEncoder и JSONDecoder, а также параметры, не упомянутые явно, не рассматриваются.
Этот модуль не строго соответствует RFC: в нём реализованы некоторые расширения, допустимые в JavaScript, но не в JSON. В частности:
- Бесконечные значения и значения NaN принимаются и выводятся;
- Повторяющиеся имена в объекте принимаются, и используется только значение последней пары «имя — значение».
Поскольку RFC разрешает RFC-совместимым анализаторам принимать входные тексты, не соответствующие RFC, десериализатор этого модуля технически соответствует RFC при настройках по умолчанию.
Кодировки символов
RFC требует, чтобы JSON представлялся в UTF-8, UTF-16 или UTF-32; для максимальной совместимости рекомендуется использовать UTF-8 по умолчанию.
Как разрешено, но не требуется RFC, сериализатор этого модуля по умолчанию задаёт ensure_ascii=True, экранируя выходные данные так, чтобы полученные строки содержали только символы ASCII.
За исключением параметра ensure_ascii, этот модуль определён строго в терминах преобразования объектов Python в Unicode strings и обратно, поэтому напрямую не затрагивает вопрос кодировок символов.
RFC запрещает добавлять в начало текста JSON метку порядка байтов (BOM), и сериализатор этого модуля не добавляет BOM в выходные данные. RFC разрешает, но не требует, чтобы десериализаторы JSON игнорировали начальную BOM во входных данных. Десериализатор этого модуля вызывает исключение ValueError, если присутствует начальная BOM.
RFC явно не запрещает строки JSON, содержащие последовательности байтов, которые не соответствуют допустимым символам Unicode (например, непарные суррогаты UTF-16), но отмечает, что они могут вызывать проблемы совместимости. По умолчанию этот модуль принимает и выводит (если они присутствуют в исходной str) кодовые точки таких последовательностей.
Бесконечные значения и значения NaN
RFC не допускает представление бесконечных значений и значений NaN. Несмотря на это, по умолчанию этот модуль принимает и выводит Infinity, -Infinity и NaN, как если бы они были допустимыми литеральными значениями чисел JSON:
>>> # Neither of these calls raises an exception, but the results are not valid JSON
>>> json.dumps(float('-inf'))
'-Infinity'
>>> json.dumps(float('nan'))
'NaN'
>>> # Same when deserializing
>>> json.loads('-Infinity')
-inf
>>> json.loads('NaN')
nan
В сериализаторе для изменения такого поведения можно использовать параметр allow_nan. В десериализаторе для изменения такого поведения можно использовать параметр parse_constant.
Повторяющиеся имена в объекте
RFC указывает, что имена в объекте JSON должны быть уникальными, но не предписывает, как обрабатывать повторяющиеся имена в объектах JSON. По умолчанию этот модуль не вызывает исключение, а вместо этого игнорирует все пары «имя — значение», кроме последней для данного имени:
>>> weird_json = '{"x": 1, "x": 2, "x": 3}'
>>> json.loads(weird_json)
{'x': 3}
Для изменения такого поведения можно использовать параметр object_pairs_hook.
Значения верхнего уровня, не являющиеся объектами или массивами
Старая версия JSON, определённая устаревшим документом RFC 4627, требовала, чтобы значение верхнего уровня текста JSON было объектом или массивом JSON ( dict или list Python), и не могло быть значением null, логическим значением, числом или строкой JSON. RFC 7159 отменил это ограничение, и этот модуль никогда не реализовывал его ни в сериализаторе, ни в десериализаторе.
Тем не менее для максимальной совместимости вы можете добровольно соблюдать это ограничение.
Ограничения реализации
Некоторые реализации десериализаторов JSON могут устанавливать ограничения на:
- размер принимаемых текстов JSON
- максимальный уровень вложенности объектов и массивов JSON
- диапазон и точность чисел JSON
- содержимое и максимальную длину строк JSON
Этот модуль не накладывает подобных ограничений, помимо ограничений, присущих соответствующим типам данных Python или самому интерпретатору Python.
При сериализации в JSON учитывайте подобные ограничения приложений, которые могут использовать ваш JSON. В частности, числа JSON часто десериализуются в числа двойной точности IEEE 754 и поэтому ограничены диапазоном и точностью такого представления. Это особенно важно при сериализации значений Python типа int чрезвычайно большой величины или экземпляров «экзотических» числовых типов, таких как decimal.Decimal.
Интерфейс командной строки
Исходный код: Lib/json/tool.py
Модуль json.tool предоставляет простой интерфейс командной строки для проверки и форматирования объектов JSON.
Если необязательные аргументы infile и outfile не указаны, будут использоваться соответственно sys.stdin и sys.stdout:
$ echo '{"json": "obj"}' | python -m json.tool
{
"json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Изменено в версии 3.5: Теперь вывод имеет тот же порядок, что и входные данные. Используйте параметр --sort-keys, чтобы сортировать вывод словарей по ключам в алфавитном порядке.
Параметры командной строки
-
infile -
Файл JSON, который нужно проверить или отформатировать:
$ python -m json.tool mp_films.json [ { "title": "And Now for Something Completely Different", "year": 1971 }, { "title": "Monty Python and the Holy Grail", "year": 1975 } ]Если infile не указан, данные читаются из
sys.stdin.
-
outfile -
Записать результат обработки infile в указанный файл outfile. В противном случае записать его в
sys.stdout.
-
--sort-keys -
Сортировать вывод словарей по ключам в алфавитном порядке.
Добавлено в версии 3.5.
-
--no-ensure-ascii -
Отключить экранирование символов, отличных от ASCII. Дополнительные сведения см. в описании
json.dumps().Добавлено в версии 3.9.
-
--json-lines -
Разбирать каждую входную строку как отдельный объект JSON.
Добавлено в версии 3.8.
-
--indent, --tab, --no-indent, --compact -
Взаимоисключающие параметры управления пробелами.
Добавлено в версии 3.9.
-
-h, --help -
Показать справочное сообщение.
Сноски
© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/json.html