toBaseType static method

dynamic toBaseType(
  1. dynamic v
)

将复杂类型转换为dart内置的基础类型。转换结果可以直接使用jsonEncode进行序列化,可以直接保存到mongo数据库

经过测试发现:jsonEncode操作Map时只支持以字符串为key,mongo数据库保存Map时只支持以字符串为key

Implementation

static dynamic toBaseType(dynamic v) {
  if (v is Map) {
    return v.map((key, value) => MapEntry(key is String ? key : (key is ObjectId ? key.toHexString() : (key is Enum ? key.name : key.toString())), toBaseType(value)));
  } else if (v is List) {
    return v.map((value) => toBaseType(value)).toList();
  } else if (v is Enum) {
    return v.name;
  } else if (v is DbBaseModel) {
    return v.toJson();
  } else if (v is IntX) {
    return v.toInt();
  } else if (v is ObjectId) {
    return v;
  } else {
    return v;
  }
}