'_InternalLinkedHashMap <String,dynamic>'类型不是'String'类型的子类型

时间:2020-09-29 10:02:46

标签: json flutter dart

在存储到本地数据库之前将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'

1 个答案:

答案 0 :(得分:1)

如果在fromJson()中,则需要Map 和输出

txtFiles.Clear();

我认为您不必对其进行解码。

我建议您替换

i['created_by_user'] //is a Map<String, dynamic> 

使用

CreatedBy.fromJson(jsonDecode(i['created_by_user'])),