是否有标准的方法将Map转换为用户定义类的对象?在Python中,你可以做MyClass(**map),基本上是将Map解 Package 成类构造函数的命名参数。任何指示/帮助将不胜感激。
pbossiut1#
您也可以通过使用named constructor手动实现这一点,如下简单示例所示:
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}"); }) ); } }
字符串
的数据
5sxhfpxr2#
没有内置的方式。您可以使用序列化包之一,如
8hhllhi23#
You can use Function.apply .我做了一个gist来测试它的链接答案
bt1cpqcv4#
这是我刚刚想到的模式,似乎一开始就起作用了。如果它坏了我会回来报告的。
class Foo { String bar; User user; Foo({ required this.bar, required this.user, }); @override Map toJson() => { 'bar': bar, 'user': user, }; static Foo fromJson(Map json) { return Foo(bar: json['bar'], user: json['user']); } }
字符串第一个构造函数
Foo({ required this.bar, required this.user, });
型允许您使用以下语法声明示例:
Foo testFoo = Foo(bar: 'foo', user: User(name:'dummy', age: 23));
型第二个功能
@override Map toJson() => { 'bar': bar, 'user': user, };
型是一个示例方法,它允许你将类转换为大多数意图和目的都是JSON对象,尽管在Dart中,它的名称是Map<dynamic,dynamic>,或者是一个带有动态键和动态值的Map。第三个功能
static Foo fromJson(Map json) { return Foo(bar: json['bar'], user: json['user']); }
型是另一个可以作为静态方法调用的构造函数。它接受toJson示例方法返回的类型相同。这有效地允许您将数据类型序列化和反序列化到用于表示http库请求方法中的JSON对象的结构中或从这些结构中分离。如果你有问题就告诉我。我对这个解决方案的稳定性很感兴趣。
4条答案
按热度按时间pbossiut1#
您也可以通过使用named constructor手动实现这一点,如下简单示例所示:
字符串
的数据
5sxhfpxr2#
没有内置的方式。
您可以使用序列化包之一,如
8hhllhi23#
You can use Function.apply .我做了一个gist来测试它的链接答案
bt1cpqcv4#
这是我刚刚想到的模式,似乎一开始就起作用了。如果它坏了我会回来报告的。
字符串
第一个构造函数
型
允许您使用以下语法声明示例:
型
第二个功能
型
是一个示例方法,它允许你将类转换为大多数意图和目的都是JSON对象,尽管在Dart中,它的名称是Map<dynamic,dynamic>,或者是一个带有动态键和动态值的Map。
第三个功能
型
是另一个可以作为静态方法调用的构造函数。它接受toJson示例方法返回的类型相同。这有效地允许您将数据类型序列化和反序列化到用于表示http库请求方法中的JSON对象的结构中或从这些结构中分离。
如果你有问题就告诉我。我对这个解决方案的稳定性很感兴趣。