在Dart中映射到类
是否有标准方法将地图转换为用户定义类的对象 在Python中,您可以执行MyClass(**map),它基本上将映射展开为类的构造函数的命名参数在Dart中映射到类,dart,flutter,Dart,Flutter,是否有标准方法将地图转换为用户定义类的对象 在Python中,您可以执行MyClass(**map),它基本上将映射展开为类的构造函数的命名参数 任何提示/帮助都将不胜感激。没有内置方式。 您可以使用其中一个序列化包,如 您也可以使用以下简单示例手动实现这一点: import 'package:flutter/material.dart'; Map myMap = {"Users": [ {"Name": "Mark", "Email": "mark@email"}, {
任何提示/帮助都将不胜感激。没有内置方式。
您可以使用其中一个序列化包,如
import 'package:flutter/material.dart';
Map myMap = {"Users": [
{"Name": "Mark", "Email": "mark@email"},
{"Name": "Rick", "Email": "rick@email"},
]
};
class MyData {
String name;
String email;
MyData.fromJson(Map json){
this.name = json["Name"];
this.email = json ["Email"];
}
}
class UserList extends StatelessWidget {
MyData data;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("User List"),),
body:
new ListView.builder(
shrinkWrap: true,
itemCount: myMap["Users"].length,
itemBuilder: (BuildContext context, int index) {
data = new MyData.fromJson(myMap["Users"][index]);
return new Text("${data.name} ${data.email}");
})
);
}
}
。我做了一个测试来测试链接的答案,使用这种方法,调用代码可以具有类型安全性,
street
和city
字段的自动完成,以及编译时异常。如果您输入错误或将字段视为int
s而不是Strings
,应用程序将不会编译,而是在运行时崩溃
一个地址.fromJson()
构造函数,用于从映射结构构造新的用户实例
一个toJson()
方法,用于将用户实例转换为映射
class Address {
String street;
String city;
Address(this.street, this.city);
Address.fromJson(Map<String, dynamic> json)
: street = json['street'],
city = json['city'];
Map<String, dynamic> toJson() =>
{
'citstreety': street,
'city': city,
};
}
List<Address> getAddressList(){
Map myMap = {"address": [
{"street": "Marine Lines", "city": "Mumbai"},
{"street": "Main Road", "city": "Delhi"},
]
};
var data = myMap["address"];
List<Address> addressModelList = [];
for (var u in data) {
Address address =
Address.fromJson(u);
addressModelList.add(address);
}
return addressModelList;
}
类地址{
弦街;;
字符串城市;
地址(本街、本市);
Address.fromJson(映射json)
:street=json['street'],
city=json['city'];
映射到JSON()=>
{
“城市街”:街道,
“城市”:城市,
};
}
列表getAddressList(){
映射myMap={“地址”:[
{“街道”:“海上航线”,“城市”:“孟买”},
{“街道”:“主要道路”,“城市”:“德里”},
]
};
var data=myMap[“地址”];
List addressModelList=[];
用于(数据中的var u){
地址=
地址:fromJson(u);
addressModelList.add(地址);
}
返回地址模型列表;
}