json — кодировщик и декодировщик JSON
Исходный код: Lib/json/__init__.py
JSON (JavaScript Object Notation — нотация объектов JavaScript), определённый в RFC 7159 (который заменяет RFC 4627) и ECMA-404, — это лёгкий формат обмена данными, вдохновлённый синтаксисом литералов объектов JavaScript (хотя он и не является строгим подмножеством JavaScript [1] ).
Предупреждение
Соблюдайте осторожность при разборе данных JSON из ненадёжных источников. Вредоносная строка 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({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
"4": 5,
"6": 7
}
Декодирование 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 из командной оболочки для проверки и форматирования JSON:
$ 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) – Если задана, функция вызывается с результатом декодирования каждого литерала объекта (значением типа
dict). Возвращаемое этой функцией значение используется вместоdict. Эту возможность можно использовать для создания пользовательских декодировщиков, например для сопоставления классов в JSON-RPC. Значение по умолчанию —None. -
object_pairs_hook (вызываемый объект | None) – Если задана, функция вызывается с результатом декодирования каждого литерала объекта в виде упорядоченного списка пар. Возвращаемое этой функцией значение используется вместо
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) -
Расширяемый кодировщик структур данных Python в JSON.
По умолчанию поддерживаются следующие объекты и типы:
Python
JSON
dict
object
list, tuple
array
str
string
int, float, int- & float-derived Enums
number
True
true
False
false
None
null
Изменено в версии 3.4: Добавлена поддержка классов Enum, производных от int и float.
Чтобы добавить поддержку других объектов, создайте подкласс и реализуйте метод
default()с другим методом, который по возможности возвращает сериализуемый объект дляo; в противном случае он должен вызвать реализацию суперкласса (чтобы вызвать исключениеTypeError).Если skipkeys равно false (значение по умолчанию), при попытке кодировать ключи, которые не являются
str,int,floatили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 выводятся в форматированном виде с указанным уровнем отступа. При нулевом, отрицательном значении или
""вставляются только символы новой строки.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, JSON должен быть представлен в UTF-8, UTF-16 или UTF-32; для максимальной совместимости рекомендуется использовать UTF-8 по умолчанию.
В соответствии с RFC, хотя это и не является обязательным, сериализатор этого модуля по умолчанию устанавливает ensure_ascii=True, экранируя вывод таким образом, чтобы итоговые строки содержали только символы ASCII.
За исключением параметра ensure_ascii, этот модуль определяет преобразование исключительно в терминах преобразования объектов Python в Unicode strings и обратно, поэтому напрямую не затрагивает вопросы кодировки символов.
RFC запрещает добавлять маркер порядка байтов (BOM) в начало текста JSON, и сериализатор этого модуля не добавляет BOM в результат. RFC разрешает, но не требует, чтобы десериализаторы JSON игнорировали начальный BOM во входных данных. Если начальный BOM присутствует, десериализатор этого модуля вызывает исключение ValueError.
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 (словарь Python dict или список list), но не 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/json.html