toBaseType static method
dynamic
toBaseType(
- 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;
}
}