Skip to main content

json

Encode Python objects as JSON and decode JSON back into Python. Encoder and decoder are subclassable for custom types.

Source-of-record: Lib/json/, Modules/_json.c, json docs.

Functions

FunctionReturns
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)Write to file.
dumps(obj, **kw)Return a str.
load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)Read from file.
loads(s, **kw)Parse a str/bytes.

Type mapping

PythonJSON
dictobject
list, tuplearray
strstring
int, floatnumber
True / Falsetrue / false
Nonenull

Decoding produces dict, list, str, int or float, bool, None. json.loads accepts UTF-8, UTF-16, or UTF-32 bytes.

Encoder

JSONEncoder parameterDefaultEffect
skipkeysFalseDrop non-string keys instead of raising.
ensure_asciiTrueEscape non-ASCII.
check_circularTrueDetect cycles.
allow_nanTruePermit nan / inf.
sort_keysFalseSort object keys.
indentNonePretty-print with this indent.
separatorsNoneDefaults: (', ', ': ') or (',', ':') with indent.
defaultNoneFallback for unsupported types.

Override JSONEncoder.default(self, obj) to serialise new types.

Decoder

JSONDecoder parameterEffect
object_hook(dict)Replace each object with a custom value.
object_pairs_hook(list_of_pairs)Same; preserves order; mutually exclusive.
parse_float(str)Parse number with a fraction.
parse_int(str)Parse integer.
parse_constant(str)Handle Infinity, -Infinity, NaN.
strictWhen False, accept control chars in strings.

Exceptions

json.JSONDecodeError(msg, doc, pos) carries lineno, colno, pos, doc. Subclass of ValueError.

Tool

python -m json.tool reformats stdin or a file. Flags: --sort-keys, --indent, --no-ensure-ascii, --json-lines, --compact.

Gopy status

AreaState
dumps / loads byte-identical with CPythonComplete.
Encoder hooks (default, cls)Complete.
Decoder hooksComplete.
StreamingComplete via load/dump.
json.toolComplete.

Reference

  • CPython 3.14: json.
  • Lib/json/, Modules/_json.c.
  • module/_json/. gopy port.