# JsonSerializer

class xsdata.formats.dataclass.serializers.JsonSerializer(config=<factory>, context=<factory>, dict_factory=<class 'dict'>, dump_factory=<function dump>, indent=None)

  Json serializer for dataclasses.

  Parameters:

    - config (`SerializerConfig`) – Serializer configuration

    - context (`XmlContext`) – Model context provider

    - dict_factory (`Callable`) – Override default dict factory to add further logic

    - dump_factory (`Callable`) – Override default json.dump call with another implementation

    - indent (`Optional`[`int`]) – Output indentation level

  dict_factory

    alias of `dict`

  dump_factory(fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

    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.

  render(obj)

    Convert the given object tree to json string.

    Return type:

      `str`

  write(out, obj)

    Write the given object tree to the output text stream.

    Parameters:

      - out (`TextIO`) – The output stream

      - obj (`Any`) – The input dataclass instance

  __eq__(other)

    Return self==value.

  __hash__ = None