Flutter-快速完成JsonModel的轉換

一、前言

因爲在Flutter中禁用運行時反射,運行時反射會干擾Dart的tree shaking,由於反射會默認使用所有代碼,因此tree shaking會很難工作;這些工具無法知道哪些widget在運行時未被使用,因此冗餘代碼很難剝離。使用反射時,應用尺寸無法輕鬆的進行優化。

二、dart:convert

Flutter中基本的JSON序列化非常簡單。Flutter有一個內置dart:convert庫,其中包含一個簡單的JSON編碼器和解碼器,但很難勝任我們開發中複雜的開發場景。

三、json_serializable package

要使用,需要在pubspec.yaml中添加對應的依賴項


通過此鏈接可以查看這些所需依賴項的最新版本 。

在使用前,需要編寫服務端返回的Josn的對應模型,展示一個列子。

import 'package:json_annotation/json_annotation.dart'; 

part 'cate_info.g.dart';


@JsonSerializable()
  class CateInfo extends Object {

  @JsonKey(name: 'cateId')
  int cateId;

  @JsonKey(name: 'orderIndex')
  int orderIndex;

  @JsonKey(name: 'cateTitle')
  String cateTitle;

  @JsonKey(name: 'cateStatus')
  int cateStatus;


  CateInfo(this.cateId,this.orderIndex,this.cateTitle,this.cateStatus,);

  factory CateInfo.fromJson(Map<String, dynamic> srcJson) => _$CateInfoFromJson(srcJson);

  Map<String, dynamic> toJson() => _$CateInfoToJson(this);

}

接下來,有兩種運行代碼生成器的方法:
一次性生成

flutter packages pub run build_runner build

在項目的根目錄下運行此命令,會進行一次構建,生成對應的解釋文件

持續生成

flutter packages pub run build_runner watch

在項目的根目錄下運行此命令,會啓動watcher,它會監視我們項目中文件的變化,並在需要時自動構建必要的解釋文件

四、 JSONConverter

上述還需要,手動編碼,非常浪費時間。

JSONConverter 是MAC上iOS開發的輔助小工具,可以快速的把json數據轉換生成對應的模型類屬性,目前支持Objective-C、Swift、Flutter以及目前流行的Swift第三方庫: SwiftyJSONHandyJSONObjectMapper,可以靈活選擇構建class/struct,並支持配置類名前綴等,省去手敲模型的麻煩,藉此提高我們的開發效率。
另外還對mac os dark mode 進行了適配,增加版本更新提醒,緩存上次轉換配置緩存等實用功能。

JSONConverter 託管倉庫:https://github.com/iosyaowei/JSONConverter歡迎各位大佬提各種建議和issue,如果喜歡給個star 鼓勵一波 哈哈哈哈O(∩_∩)O哈哈~。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章