die*_*per 76
尝试这个:
Map<String, dynamic>.from(yourData)
Run Code Online (Sandbox Code Playgroud)
jam*_*lin 15
您不需要在_InternalLinkedHashMap<K, V>
and之间进行任何转换Map<K, V>
:前者已经是后者的子类型。
void main() async {
final map = <String, int>{};
print(map.runtimeType);
print('${map is Map<String, int>}');
}
Run Code Online (Sandbox Code Playgroud)
印刷:
_InternalLinkedHashMap<String, int>
true
Run Code Online (Sandbox Code Playgroud)
(Map
的默认构造函数是一个工厂构造函数,它构造了一个LinkedHashMap
。LinkedHashMap
的默认构造函数也是一个工厂构造函数,Dart VM 的实现构造并返回了一个内部_InternalLinkedHashMap
对象。)
请注意,这仅在_InternalLinkedHashMap<K, V>
使用相同K
和V
作为时才成立Map
。如果它们在参数不同的类型,那么你将需要执行一个显式的转换,但是这不是这种情况在问这个问题。
我是如何做到的,我使用以下方法将 _InternalLinkedHashMap<dynamic,dynamic> 转换为 HashMap
var map = HashMap.from(value) // value is _InternalLinkedHashMap <dynamic, dynamic>
Run Code Online (Sandbox Code Playgroud)
从这里我可以获得类方法将地图转换为我的对象,以便我可以在代码中使用它,如下所示
User.fromJson(map) // this return User object
Run Code Online (Sandbox Code Playgroud)
您可以使用此网站直接从 JSON 生成 Dart 模型类。
以下是 User.Json 方法的代码片段:
SeatBookingModel.fromJson(Map<String, dynamic> json) {
userName= json['userName'];
userEmail= json['userEmail'];
}
Run Code Online (Sandbox Code Playgroud)
快乐编码
如果您的对象比一层更深,请尝试此操作:
final Map<String, dynamic> convertedData = jsonDecode(jsonEncode(yourData));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24026 次 |
最近记录: |