serialize method

  1. @override
Object serialize(
  1. Serializers serializers,
  2. AnyOf object, {
  3. FullType specifiedType = FullType.unspecified,
})
override

Serializes object.

Use serializers as needed for nested serialization. Information about the type being serialized is provided in specifiedType.

Returns a value that can be represented as a JSON primitive: a boolean, an integer, a double, a String or a List.

TODO(davidmorgan): document the wire format.

Implementation

@override
Object serialize(Serializers serializers, AnyOf object,
    {FullType specifiedType = FullType.unspecified}) {
  final result = <Object?>[];
  //serialize the values
  for (var valueEntry in object.values.entries) {
    final typeIndex = valueEntry.key;
    final type = object.types[typeIndex];
    final value = valueEntry.value;
    final serialized = serializers.serialize(
      value,
      specifiedType: specifiedType.parameters[typeIndex],
    );
    if (serialized is Map) {
      for (var e in serialized.entries) {
        result.add(e.key);
        result.add(e.value);
      }
    } else {
      //primitive, return it
      return serialized!;
    }
  }
  return result;
}