异常:类型“String”不是类型“Map<String,dynamic>”的子类型

Tot*_*Tot 20 json flutter

异常:类型“String”不是类型“Map<String,dynamic>”的子类型

{"collection":{"data":"{\"id\": 1, \"name\": \"Marko\", \"picture\": 
\"https://lh3.googleusercontent.com/a-/AAuE7mC1vqaKk_Eylt-fcKgJxuN96yQ7dsd2dBdsdsViK959TKsHQ=s96- 
c\"}","statusCode":202,"version":"1.0"}}
Run Code Online (Sandbox Code Playgroud)

这是上面的 json,我想将它仅放在 User pojo 类中 [data]。

但它抛出了上面的异常类型。

class UserCollection {
  final User data;
  final int statusCode;
  final String version;

 UserCollection({this.data, this.statusCode, this.version});

factory UserCollection.fromJson(Map<String, dynamic> json) {
 return UserCollection(
    statusCode: json['statusCode'] as int,
    data: User.fromJson(json['data']) ,
    version: json['version'] as String );
}

 Map<String, dynamic> toJson() {
 final Map<String, dynamic> data = new Map<String, dynamic>();
 data['data'] = this.data;
 data['statusCode'] = this.statusCode;
 data['version'] = this.version;
 return data;
 }
}
Run Code Online (Sandbox Code Playgroud)

用户Pojo类

@JsonSerializable()
class User {
final int id;
 final String sub;
 final String home;
 final String work;
 final String name;
 final String mobileNo;
 final String email;
 final String favMechId;
 final String appVersionCode;
 final String picture;
 final String serverTime;
 final String dateCreated;
 final String dateModified;
 final String fcmTokenId;

 User(
  {this.id,
  this.sub,
  this.home,
  this.work,
  this.name,
  this.mobileNo,
  this.email,
  this.favMechId,
  this.appVersionCode,
  this.picture,
  this.serverTime,
  this.dateCreated,
  this.dateModified,
  this.fcmTokenId});



  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);

  Map<String,dynamic> toJson() => _$UserToJson(this); 
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我引用了这个中等网站,中等颤振 json

但在 4 个多小时的时间里我不知道出了什么问题。如果将 User.from() 更改为 String 就可以了。但我需要将 [data] 从 json 解析为 User pojo 类。

Sag*_*ala 18

尝试下面,

factory UserCollection.fromJson(Map<String, dynamic> json) {
 return UserCollection(
    statusCode: json['statusCode'] as int,
    data: User.fromJson(json.decode(json['data'])),
    version: json['version'] as String );
}
Run Code Online (Sandbox Code Playgroud)

在某一方面的变化data: User.fromJson(json.decode(json['data'])),