Skip to content

json

xsdata.formats.dataclass.serializers.json

DictFactory

Dictionary factory types.

Source code in xsdata/formats/dataclass/serializers/json.py
22
23
24
25
class DictFactory:
    """Dictionary factory types."""

    FILTER_NONE = filter_none

JsonSerializer dataclass

Bases: DictEncoder, AbstractSerializer

Json serializer for data classes.

Parameters:

Name Type Description Default
config SerializerConfig

The serializer config instance

field(default_factory=SerializerConfig)
context XmlContext

The models context instance

field(default_factory=XmlContext)
dict_factory Callable

Dictionary factory

field(default=dict)
dump_factory Callable

Json dump factory e.g. json.dump

field(default=dump)
Source code in xsdata/formats/dataclass/serializers/json.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
@dataclass
class JsonSerializer(DictEncoder, AbstractSerializer):
    """Json serializer for data classes.

    Args:
        config: The serializer config instance
        context: The models context instance
        dict_factory: Dictionary factory
        dump_factory: Json dump factory e.g. json.dump
    """

    dump_factory: Callable = field(default=json.dump)

    def render(self, obj: Any) -> str:
        """Serialize the input model instance to json string.

        Args:
            obj: The input model instance

        Returns:
            The serialized json string output.
        """
        output = StringIO()
        self.write(output, obj)
        return output.getvalue()

    def write(self, out: TextIO, obj: Any):
        """Serialize the given object to the output text stream.

        Args:
            out: The output text stream
            obj: The input model instance to serialize
        """
        self.dump_factory(self.encode(obj), out, indent=self.config.indent)

render(obj)

Serialize the input model instance to json string.

Parameters:

Name Type Description Default
obj Any

The input model instance

required

Returns:

Type Description
str

The serialized json string output.

Source code in xsdata/formats/dataclass/serializers/json.py
41
42
43
44
45
46
47
48
49
50
51
52
def render(self, obj: Any) -> str:
    """Serialize the input model instance to json string.

    Args:
        obj: The input model instance

    Returns:
        The serialized json string output.
    """
    output = StringIO()
    self.write(output, obj)
    return output.getvalue()

write(out, obj)

Serialize the given object to the output text stream.

Parameters:

Name Type Description Default
out TextIO

The output text stream

required
obj Any

The input model instance to serialize

required
Source code in xsdata/formats/dataclass/serializers/json.py
54
55
56
57
58
59
60
61
def write(self, out: TextIO, obj: Any):
    """Serialize the given object to the output text stream.

    Args:
        out: The output text stream
        obj: The input model instance to serialize
    """
    self.dump_factory(self.encode(obj), out, indent=self.config.indent)

filter_none(x)

Convert a key-value pairs to dict, ignoring None values.

Parameters:

Name Type Description Default
x Tuple

Key-value pairs

required

Returns:

Type Description
Dict

The filtered dictionary.

Source code in xsdata/formats/dataclass/serializers/json.py
10
11
12
13
14
15
16
17
18
19
def filter_none(x: Tuple) -> Dict:
    """Convert a key-value pairs to dict, ignoring None values.

    Args:
        x: Key-value pairs

    Returns:
        The filtered dictionary.
    """
    return {k: v for k, v in x if v is not None}