【问题标题】:type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型 'String' 的子类型
【发布时间】:2021-01-14 22:19:15
【问题描述】:

在存储到本地数据库之前将json 字符串转换为对象的正确方法是什么?

这是i['created_by_user'] 的输出:

{id: 3, name: A}

我试图将其转换为 CreatedBy 对象

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

创建者

@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'

【问题讨论】:

    标签: json flutter dart


    【解决方案1】:

    如果在 fromJson() 你需要一个 Map

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

    我认为你不必解码它。

    我建议你更换

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2021-10-06
      • 2018-12-14
      • 2021-06-17
      • 2021-01-30
      • 2021-09-10
      • 2021-02-01
      • 2020-07-03
      • 2020-03-04
      相关资源
      最近更新 更多