Flutter 功能最全的JsonToDart工具

法的空間發表於2019-06-27

Flutter 功能最全的JsonToDart工具

Windows桌面上功能最全面的Json轉換Dart的工具Json To Dart,使用UWPWPF開發。

為什麼要做這個工具呢?

1.老是被服務端坑,各種資料型別不對

2.引數命名混亂,強迫症根本不能忍

3.官方的不能自定義,然後我之前用的大佬們寫的工具debuggerx01大佬低調大佬,但是有些需求,還是不好老是麻煩大佬,就想著自己寫方便一些

工具使用UWPWPF開發,原因如下:

1.我是一個C#喵,從開始學習java,到入坑微軟做Xaml,Silverlight,WPF,WindowsPhone,UWP 全套靈活運用。在最大的componentone/grapecity控制元件公司呆過幾年,轉做Flutter之後繼續專注自定義元件 FlutterCandies, 希望能分享更多的Flutter元件,為大家提供方便。 那個。。話題扯遠了。。總結一下,我覺得用UWP/WPF/Silverlight 海陸空一套程式碼完成這個工具會很方便

2.也不是沒有考慮用Dart寫,畢竟支援web/windows/mac。但是我這個工具介面上面的佈局,需要很多輸入框進行自定義修改。Flutter現在的沒有提供舒服的雙向繫結方式,想一想每一個輸入框就要一個control,頭有點大。。

功能最全面的Json轉換Dart的工具,使用UWP,WPFSilverlight開發。

有任何問題可以提Issue 或者

加入QQ群181398081詢問

下載安裝

UWP(Windows10)

Windows10 使用者

考慮到應用商店經常大姨媽,就沒有上傳到商店了,大家到下面地址下載安裝

1.0

下載好安裝包,解壓。

第一次安裝,需要安裝證照,請按照下圖,使用PowerShell開啟Add-AppDevPackage.ps1,一路接受就安裝完畢

Flutter 功能最全的JsonToDart工具

後面如果工具有更新,可以下載最新的,然後點選FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安裝

Flutter 功能最全的JsonToDart工具

WPF(Windows7/Windows8)

Windows7/Windows8 使用者

1.0

下載解壓,點選setup.exe安裝

Flutter 功能最全的JsonToDart工具

Web(Silverlight)

首先需要安裝Silverlight

Mac的使用者下載Mac的,Windows使用者下載Windows的

然後就是瀏覽器問題了,因為支援Silverlight的瀏覽器是有限的,除了Internet Explorer支援,以下版本的瀏覽器也支援.

Flutter 功能最全的JsonToDart工具

在Mac上面Firefox可用

由於中文字型問題,包含了中文字型檔案,第一次會比較久,請耐心等待

Json To Dart Web地址

稍後會更新如何使用Safari開啟的

使用

Flutter 功能最全的JsonToDart工具

左邊是json的輸入框以及最後Dart生成的程式碼,右邊是生成的Json類的結構

格式化

點選格式化按鈕,將json轉換為右邊視覺化的json類結構

更多設定

設定會全部自動儲存,一次設定終身受益

資料型別全方位保護

大家一定會有被服務端坑的時候吧? 不按規定好了的資料型別傳值,導致json整個解析失敗。

開啟這個開關,就會在獲取資料的時候加一層保護,程式碼如下

dynamic convertValueByType(value, Type type, {String stack: ""}) {
  if (value == null) {
    debugPrint("$stack : value is null");
    if (type == String) {
      return "";
    } else if (type == int) {
      return 0;
    } else if (type == double) {
      return 0.0;
    } else if (type == bool) {
      return false;
    }
    return null;
  }

  if (value.runtimeType == type) {
    return value;
  }
  var valueS = value.toString();
  debugPrint("$stack : ${value.runtimeType} is not $type type");
  if (type == String) {
    return valueS;
  } else if (type == int) {
    return int.tryParse(valueS);
  } else if (type == double) {
    return double.tryParse(valueS);
  } else if (type == bool) {
    valueS = valueS.toLowerCase();
    var intValue = int.tryParse(valueS);
    if (intValue != null) {
      return intValue == 1;
    }
    return valueS == "true";
  }
}
複製程式碼

陣列全方位保護

在迴圈陣列的時候,一個出錯,導致json整個解析失敗的情況,大家遇到過吧?

開啟這個開關,將對每一次迴圈解析進行保護,程式碼如下

void tryCatch(Function f) {
  try {
    f?.call();
  } catch (e, stack) {
    debugPrint("$e");
    debugPrint("$stack");
  }
}
複製程式碼

遍歷陣列次數

在伺服器返回的資料中,有時候陣列裡面不是每一個Item都帶有全部的屬性,

如果只檢查第一個話,會存在屬性丟失的情況

你可以通過多次迴圈來避免丟失屬性

選項有1,20,99

99就代表迴圈全部進行檢查

屬性命名

屬性命名規範選項:保持原樣,駝峰式命名小駝峰,帕斯卡命名大駝峰,匈牙利命名下劃線

Dart 命名規範

Dart 官方推薦 駝峰式命名小駝峰

屬性排序

對屬性進行排序

排序選項: 保持原樣,升序排列,降序排序

新增保護方法

是否新增保護方法。資料型別全方位保護/陣列全方位保護 這2個開啟的時候會生成方法。第一次使用的時候開啟就可以了,你可以方法提出去,後面生成Dart就沒有必要每個檔案裡面都要這2個方法了。

檔案頭部資訊

可以在這裡新增copyright,improt dart,建立人資訊等等,支援[Date yyyy MM-dd]來生成時間,Date後面為日期格式。

比如[Date yyyy MM-dd] 會將你生成Dart程式碼的時間按照yyyy MM-dd的格式生成對應時間

屬性訪問器型別

點選格式化之後,右邊會顯示視覺化的json類結構,在右邊一列,就是屬性訪問器型別設定

Flutter 功能最全的JsonToDart工具

選項:預設,Final,Get,GetSet

頂部設定修改,下面子項都會修改。你也可以單獨對某個屬性進行設定。

修改json類資訊

點選格式化之後,右邊會顯示視覺化的json類結構。

第一列為在json中對應的key

第二列為屬性型別/類的名字。如果是類名,會用黃色背景提示

第三列是屬性的名字

輸入選項如果為空,會報紅提示

生成Dart

做好設定之後,點選生成Dart按鈕,左邊就會生成你想要的Dart程式碼,並且提示“Dart生成成功,已複製到剪下板”,可以直接複製到你的Dart檔案裡面

是不是很方便很人性化,歡迎Start,Fork,666三連。

最後放上 Josn To Dart,如果你有什麼不明白或者對這個方案有什麼改進的地方,請告訴我,歡迎加入Flutter Candies,一起生產可愛的Flutter 小糖果(QQ群:181398081)

再次邀請,有心為Flutter生態做貢獻的小夥伴加入Flutter Candies,一起開心地寫bug。

Flutter 功能最全的JsonToDart工具

最最後放上Flutter Candies全家桶,真香。

Flutter 功能最全的JsonToDart工具

相關文章