错误:类型转换中类型'String'不是类型'Map <String,dynamic>'的子类型

时间:2020-09-24 05:07:38

标签: json dart

我有回应

 [{details: {macId:789101112}}]

jsonData ['details']将返回字符串{macId:789101112}

解析代码:



fromJson(Map<String, dynamic> jsonData) => User(
        details: UserDetails.fromJson(jsonData['details'] as Map<String, dynamic>),
      );


class UserDetails{
 final String macId;
 UserDetails({this.macId});

 static UserDetails fromJson(Map<String, dynamic> json) =>
     UserDetails(macId: json['macId'] as String);
}

1 个答案:

答案 0 :(得分:0)

尝试查看原始来源。根据您的描述,听起来像是这样:

[{"details": "{\"macId\": 789101112}"}]

也就是说,"details"条目的 value 是包含JSON源代码的 string

您将需要第二次解析:

fromJson(Map<String, dynamic> jsonData) => 
  User(details: UserDetails.fromJson(jsonDecode(jsonData['details'])));

其原因很可能是您从UserDetails对象生成JSON数据的地方,它在地图上调用jsonEncode,但不应这样做。只需让UserDetails-to-JSON函数返回一个映射,即可将该映射嵌入更大的类似JSON的数据结构中。然后,您也不需要第二个jsonDecode