Skip to content

make json serialization support generics in flutter

License

Notifications You must be signed in to change notification settings

ejin66/JsonInflater

Repository files navigation

JsonInflater

详细介绍:

Flutter中Json序列化之--支持泛型

如何使用

  1. 添加依赖:

    dev_dependencies:
      json_serializable: ^2.0.0
      jsoninflater: ^0.2.0
      build_runner: ^1.0.0
  2. 创建模型,添加注解JsonFlater以及mixin类。如:

    part `xxx.g.dart`;
    
    @JsonInflater()
    class TestGenerics1<K> with PartOfTestGenerics1 {
    
      String msg;
      K data;
    
      TestGenerics1(this.msg, this.data);
    
    }

    mixin类是代码生成的,格式是:PartOf${className}。功能是提供toJson()parse()方法。

  3. 创建一个Json工具类,添加JsonGather注解。

    @JsonGather()
    class JsonUtil {
    
    }

    一个项目中只能有一个JsonGather注解。

  4. 运行命令,生成代码:

    flutter packages pub run build_runner clean
    flutter packages pub run build_runner build
  5. 使用:

    • toJson.

      var test = JsonTest("json test");
      print(test.toJson()); // -> {msg: json test}
    • parse<T>()。本框架提供的一个将Map转换成模型的方法。提供5种不同泛型数量的方法:

      • parse<T>
      • parse2<T1, T2>
      • parse3<T1, T2, T3>
      • parse4<T1, T2, T3, T4>
      • parse5<T1, T2, T3, T4, T5>

      比较特殊的是,泛型需要按照如下规则:后一个泛型必须是前面泛型的泛型。如:

      T1 : List<Model<String>>
      T2 : Model<String>
      T3 : String

      用这样的方式解决泛型嵌套的问题。


About

make json serialization support generics in flutter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published