serialize<T> method

Map<String, dynamic>? serialize<T>(
  1. T? object
)

Implementation

Map<String, dynamic>? serialize<T>(T? object) {
  if (object == null) return null;
  if (object is BackendlessUser)
    return object.properties.cast<String, dynamic>();

  Map<String, dynamic> result = Map();

  ClassMirror classMirror;

  try {
    classMirror = reflectType(T) as ClassMirror;
  } on NoSuchCapabilityError {
    classMirror = reflectType(object.runtimeType) as ClassMirror;
  }
  InstanceMirror instanceMirror = reflect(object);

  classMirror.declarations.forEach((propertyName, value) {
    if (value is VariableMirror) {
      var variable = instanceMirror.invokeGetter(propertyName);
      var columnName = Types.getColumnNameForProperty(propertyName, value);
      if (_canSerializeObject(variable)) {
        result[columnName] = variable;
      } else if (isCustomClass(variable)) {
        result[columnName] = serialize(variable);
      }
    }
  });

  return result;
}