深色模式
Dart 实体类转换
实体类相关的3种类型
对于一个实体类,有3种相关的类型:
Object
:实体类Map
:Map对象String
:json字符串
类型之间转换
为了演示,先定义一个简单的实体类:
dart
@freezed
class LoginBean with _$LoginBean {
const factory LoginBean({
@Default("") String token,
}) = _LoginBean;
factory LoginBean.fromJson(Map<String, dynamic> json) => _$LoginBeanFromJson(json);
}
Object
-> Map
使用toJson()
dart
LoginBean obj = LoginBean(token: "123");
Map jsonMap = obj.toJson();
Map
-> Object
使用fromJson()
dart
Map jsonMap = {"token": "123"};
LoginBean obj = LoginBean.fromJson(jsonMap);
String
-> Map
使用jsonDecode()
dart
String jsonString = """{"token":"123"}""";
Map<String, dynamic> jsonMap = jsonDecode(jsonString);
Map
-> String
使用jsonEncode()
dart
Map jsonMap = {"token": "123"};
String jsonString = jsonEncode(jsonMap);
Object
-> String
没有直接转换的方法,可以通过Map
类型中转。
dart
LoginBean obj = LoginBean(token: "123");
Map jsonMap = obj.toJson();
String jsonString = jsonEncode(jsonMap);
String
-> Object
没有直接转换的方法,可以通过Map
类型中转。
dart
String jsonString = """{"token":"123"}""";
Map<String, dynamic> jsonMap = jsonDecode(jsonString);
LoginBean obj = LoginBean.fromJson(jsonMap);