flutter 如何将〈字符串,动态>转换为Map〈字符串,动态>?

vjrehmav  于 2023-01-27  发布在  Flutter
关注(0)|答案(4)|浏览(311)

我在flutter应用中使用了package dio。从我的API问题中得到了一个响应。response.data得到了_InternalLinkedHashMap<String, dynamic>类型。我需要将这个值转换为Map<String, dynamic>。我尝试了很多选项,但都不起作用。
我没有办法改变服务器的响应,有什么建议吗?

cs7cruho

cs7cruho1#

试试这个:

Map<String, dynamic>.from(yourData)
tjvv9vkg

tjvv9vkg2#

您不需要在_InternalLinkedHashMap<K, V>Map<K, V>之间进行任何转换:前者已经是后者的一个亚型。

void main() async {
  final map = <String, int>{};
  print(map.runtimeType);
  print(map is Map<String, int>);
}

印刷品:

_InternalLinkedHashMap<String, int>
true

(构造LinkedHashMapMap 's default constructor is a factory constructorLinkedHashMap的默认构造函数也是一个工厂构造函数,Dart VM的实现构造并返回一个内部_InternalLinkedHashMap对象。
请注意,只有当_InternalLinkedHashMap<K, V>使用与Map相同的KV时才是这样,如果它们是在 * 不同 * 类型上参数化的,那么您将需要执行显式转换,但这 * 不是**本问题 * 中所问的情况。

q3qa4bjr

q3qa4bjr3#

我是怎么做的,我把_InternalLinkedHashMap〈dynamic,dynamic〉转换成一个HashMap

var map = HashMap.from(value) // value is _InternalLinkedHashMap <dynamic, dynamic>

从这里我可以得到类方法来转换Map到我的对象,这样我就可以在代码中使用它,如下所示

User.fromJson(map) //  this return User object

您可以使用website直接从JSON生成Dart Model类。
下面是User.Json方法的代码片段:

SeatBookingModel.fromJson(Map<String, dynamic> json) {
userName= json['userName'];
userEmail= json['userEmail'];
 }

快乐编码

q1qsirdb

q1qsirdb4#

如果对象比一个层级更深,请尝试以下操作:

final Map<String, dynamic> convertedData = jsonDecode(jsonEncode(yourData));

相关问题