在存储到本地数据库之前将json
字符串转换为对象的正确方法是什么?
这是i['created_by_user']
的输出:
{id: 3, name: A}
我试图将其强制转换为CreatedBy
对象
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),
创建dBy
@JsonSerializable()
class CreatedBy{
var name;
var id;
CreatedBy();
factory CreatedBy.fromJson(Map<String, dynamic> json) =>
_$CreatedByFromJson(json);
Map<String, dynamic> toJson() => _$CreatedByToJson(this);
}
这是我的本地表列
TextColumn get createdByUser =>
text().map(const CreatedBySqlConverter()).nullable()();
class CreatedBySqlConverter extends TypeConverter<CreatedBy, String> {
const CreatedBySqlConverter();
CreatedBy mapToDart(String fromDb) {
if (fromDb == null) return null;
return CreatedBy.fromJson(json.decode(fromDb));
}
String mapToSql(CreatedBy createdBy) => json.encode(createdBy.toJson());
}
错误
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'
答案 0 :(得分:1)
如果在fromJson()中,则需要Map
txtFiles.Clear();
我认为您不必对其进行解码。
我建议您替换
i['created_by_user'] //is a Map<String, dynamic>
使用
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),