Spec-Zone.ru › Python 3.13

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.
Вызывает исключения:
  • 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

Показать справочное сообщение.

Сноски

[1]

Как отмечено в списке исправлений к RFC 7159, JSON допускает в строках символы U+2028 (РАЗДЕЛИТЕЛЬ СТРОК) и U+2029 (РАЗДЕЛИТЕЛЬ АБЗАЦЕВ), тогда как JavaScript (начиная с редакции 5.1 ECMAScript) их не допускает.

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/json.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API