一个JSON序列化类,用于将DateTime和自定义类转换为JSON格式和从JSON格式。
特点
Jsonize解决了序列化和反序列化到未定义结构的问题。
默认情况下,Jsonize支持在数据结构中的任何位置进行DateTime序列化。
List<dynamic> myList = [1, "Hello!", DateTime.now()];
var jsonRep = Jsonize.toJson(myList);
var myDeserializedList = Jsonize.fromJson(jsonRep);
Jsonize也支持您自己的类。您可以注册一个类型,或者让您的类实现[Jsonizable]接口。
class MyClass implements Jsonizable<MyClass> {
String? str;
MyClass([this.str]);
factory MyClass.empty() => MyClass();
// Jsonizable implementation
@override
String get jsonClassCode => "mc";
@override
dynamic toJson() => str;
@override
MyClass? fromJson(value) => MyClass(value);
}
void main() {
Jsonize.registerClass(MyClass.empty());
Map<String, dynamic> myMap = {
"my_num": 1,
"my_str": "Hello!",
"my_dt": DateTime.now(),
"my_class": MyClass("here I am!")
};
var jsonRep = Jsonize.toJson(myMap);
var myDeserializedMap = Jsonize.fromJson(jsonRep);
Jsonize.toJson(...)支持缩进,以便获得更大但更易读的JSON格式。
有关更复杂的示例,如子类,请参阅示例部分。
附加信息
由于当前的Dart实现不支持反射,Jsonize需要我称之为两个额外的步骤。
- 注册所有您想要序列化的类型/类。
- 如果实现了Jsonizable接口,您需要注册一个类实例(例如,factory MyClass.empty() => …)。
我希望未来的Dart版本能够支持更好的反射和类型处理。