serialize static method

dynamic serialize(
  1. dynamic data,
  2. String type
)

Serializes data to a JSON-compatible format.

Implementation

static dynamic serialize(dynamic data, String type) {
  if (data == null) {
    return null;
  }

  if (_primitives.contains(type.toLowerCase())) {
    return data;
  }

  if (type.startsWith('Array<')) {
    final subType = type.substring(6, type.length - 1);
    return (data as List<dynamic>)
        .map((value) => serialize(value, subType))
        .toList();
  }

  if (type == 'Date') {
    if (data is DateTime) {
      return data.toUtc().toIso8601String();
    }
    return data;
  }

  if (type == 'SaleToAcquirerData') {
    if (data is String) {
      return data;
    }
    final dataString = jsonEncode(
      data is Serializable ? data.toSerializable() : data,
    );
    return base64Encode(utf8.encode(dataString));
  }

  if (data is Serializable) {
    return data.toSerializable();
  }

  return data;
}