153 lines
6.6 KiB
Go
153 lines
6.6 KiB
Go
package json
|
|
|
|
import (
|
|
_ "unsafe"
|
|
|
|
"github.com/goplus/llgo/py"
|
|
)
|
|
|
|
const LLGoPackage = "py.json"
|
|
|
|
// Serialize “obj“ as a JSON formatted stream to “fp“ (a
|
|
//
|
|
// ``.write()``-supporting file-like object).
|
|
//
|
|
// If ``skipkeys`` is true then ``dict`` keys that are not basic types
|
|
// (``str``, ``int``, ``float``, ``bool``, ``None``) will be skipped
|
|
// instead of raising a ``TypeError``.
|
|
//
|
|
// If ``ensure_ascii`` is false, then the strings written to ``fp`` can
|
|
// contain non-ASCII characters if they appear in strings contained in
|
|
// ``obj``. Otherwise, all such characters are escaped in JSON strings.
|
|
//
|
|
// If ``check_circular`` is false, then the circular reference check
|
|
// for container types will be skipped and a circular reference will
|
|
// result in an ``RecursionError`` (or worse).
|
|
//
|
|
// If ``allow_nan`` is false, then it will be a ``ValueError`` to
|
|
// serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``)
|
|
// in strict compliance of the JSON specification, instead of using the
|
|
// JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
|
|
//
|
|
// If ``indent`` is a non-negative integer, then JSON array elements and
|
|
// object members will be pretty-printed with that indent level. An indent
|
|
// level of 0 will only insert newlines. ``None`` is the most compact
|
|
// representation.
|
|
//
|
|
// If specified, ``separators`` should be an ``(item_separator, key_separator)``
|
|
// tuple. The default is ``(', ', ': ')`` if *indent* is ``None`` and
|
|
// ``(',', ': ')`` otherwise. To get the most compact JSON representation,
|
|
// you should specify ``(',', ':')`` to eliminate whitespace.
|
|
//
|
|
// ``default(obj)`` is a function that should return a serializable version
|
|
// of obj or raise TypeError. The default simply raises TypeError.
|
|
//
|
|
// If *sort_keys* is true (default: ``False``), then the output of
|
|
// dictionaries will be sorted by key.
|
|
//
|
|
// To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
|
|
// ``.default()`` method to serialize additional types), specify it with
|
|
// the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.
|
|
//
|
|
//go:linkname Dump py.dump
|
|
func Dump(obj *py.Object, fp *py.Object) *py.Object
|
|
|
|
// Serialize “obj“ to a JSON formatted “str“.
|
|
//
|
|
// If ``skipkeys`` is true then ``dict`` keys that are not basic types
|
|
// (``str``, ``int``, ``float``, ``bool``, ``None``) will be skipped
|
|
// instead of raising a ``TypeError``.
|
|
//
|
|
// If ``ensure_ascii`` is false, then the return value can contain non-ASCII
|
|
// characters if they appear in strings contained in ``obj``. Otherwise, all
|
|
// such characters are escaped in JSON strings.
|
|
//
|
|
// If ``check_circular`` is false, then the circular reference check
|
|
// for container types will be skipped and a circular reference will
|
|
// result in an ``RecursionError`` (or worse).
|
|
//
|
|
// If ``allow_nan`` is false, then it will be a ``ValueError`` to
|
|
// serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
|
|
// strict compliance of the JSON specification, instead of using the
|
|
// JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
|
|
//
|
|
// If ``indent`` is a non-negative integer, then JSON array elements and
|
|
// object members will be pretty-printed with that indent level. An indent
|
|
// level of 0 will only insert newlines. ``None`` is the most compact
|
|
// representation.
|
|
//
|
|
// If specified, ``separators`` should be an ``(item_separator, key_separator)``
|
|
// tuple. The default is ``(', ', ': ')`` if *indent* is ``None`` and
|
|
// ``(',', ': ')`` otherwise. To get the most compact JSON representation,
|
|
// you should specify ``(',', ':')`` to eliminate whitespace.
|
|
//
|
|
// ``default(obj)`` is a function that should return a serializable version
|
|
// of obj or raise TypeError. The default simply raises TypeError.
|
|
//
|
|
// If *sort_keys* is true (default: ``False``), then the output of
|
|
// dictionaries will be sorted by key.
|
|
//
|
|
// To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
|
|
// ``.default()`` method to serialize additional types), specify it with
|
|
// the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.
|
|
//
|
|
//go:linkname Dumps py.dumps
|
|
func Dumps(obj *py.Object) *py.Object
|
|
|
|
// Deserialize “fp“ (a “.read()“-supporting file-like object containing
|
|
//
|
|
// a JSON document) to a Python object.
|
|
//
|
|
// ``object_hook`` is an optional function that will be called with the
|
|
// result of any object literal decode (a ``dict``). The return value of
|
|
// ``object_hook`` will be used instead of the ``dict``. This feature
|
|
// can be used to implement custom decoders (e.g. JSON-RPC class hinting).
|
|
//
|
|
// ``object_pairs_hook`` is an optional function that will be called with the
|
|
// result of any object literal decoded with an ordered list of pairs. The
|
|
// return value of ``object_pairs_hook`` will be used instead of the ``dict``.
|
|
// This feature can be used to implement custom decoders. If ``object_hook``
|
|
// is also defined, the ``object_pairs_hook`` takes priority.
|
|
//
|
|
// To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
|
|
// kwarg; otherwise ``JSONDecoder`` is used.
|
|
//
|
|
//go:linkname Load py.load
|
|
func Load(fp *py.Object) *py.Object
|
|
|
|
// Deserialize “s“ (a “str“, “bytes“ or “bytearray“ instance
|
|
//
|
|
// containing a JSON document) to a Python object.
|
|
//
|
|
// ``object_hook`` is an optional function that will be called with the
|
|
// result of any object literal decode (a ``dict``). The return value of
|
|
// ``object_hook`` will be used instead of the ``dict``. This feature
|
|
// can be used to implement custom decoders (e.g. JSON-RPC class hinting).
|
|
//
|
|
// ``object_pairs_hook`` is an optional function that will be called with the
|
|
// result of any object literal decoded with an ordered list of pairs. The
|
|
// return value of ``object_pairs_hook`` will be used instead of the ``dict``.
|
|
// This feature can be used to implement custom decoders. If ``object_hook``
|
|
// is also defined, the ``object_pairs_hook`` takes priority.
|
|
//
|
|
// ``parse_float``, if specified, will be called with the string
|
|
// of every JSON float to be decoded. By default this is equivalent to
|
|
// float(num_str). This can be used to use another datatype or parser
|
|
// for JSON floats (e.g. decimal.Decimal).
|
|
//
|
|
// ``parse_int``, if specified, will be called with the string
|
|
// of every JSON int to be decoded. By default this is equivalent to
|
|
// int(num_str). This can be used to use another datatype or parser
|
|
// for JSON integers (e.g. float).
|
|
//
|
|
// ``parse_constant``, if specified, will be called with one of the
|
|
// following strings: -Infinity, Infinity, NaN.
|
|
// This can be used to raise an exception if invalid JSON numbers
|
|
// are encountered.
|
|
//
|
|
// To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
|
|
// kwarg; otherwise ``JSONDecoder`` is used.
|
|
//
|
|
//go:linkname Loads py.loads
|
|
func Loads(s *py.Object) *py.Object
|