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

标签 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'

最佳答案

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

i['created_by_user'] //is a Map<String, dynamic> 
我认为您不必解码它。
我建议你更换
CreatedBy.fromJson(jsonDecode(i['created_by_user'])),
CreatedBy.fromJson(i['created_by_user']),

关于json - '_InternalLinkedHashMap<String, dynamic>'类型不是 'String'类型的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64117323/

相关文章:

function - 间接函数引用

java - JSONObject getString 在第一次运行时返回 null

javascript - 从 JSON 转换为 CSV 时,将列标题设为粗体

flutter - 我如何自行停止此计时器?

flutter - 为什么 flutter MediaQuery 从屏幕顶部开始

dart - 无需等待即可从异步函数的生成器中生成值

dart - 聚合查询选择器在 DartVM 上运行,但在编译后不在 Chrome 中运行

ruby-on-rails - 如何在混合(JSON API + HTML)Rails 5应用程序中使用JSON响应处理通用错误?

json - Postgres 选择作为 json 散列

flutter - 使用 Scoped 模型显示对话框