Windows桌面上功能最全面的Json轉換Dart的工具Json To Dart,使用UWP和WPF開發。
為什麼要做這個工具呢?
1.老是被服務端坑,各種資料型別不對
2.引數命名混亂,強迫症根本不能忍
3.官方的不能自定義,然後我之前用的大佬們寫的工具debuggerx01大佬,低調大佬,但是有些需求,還是不好老是麻煩大佬,就想著自己寫方便一些
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,WPF和Silverlight開發。
有任何問題可以提Issue 或者
加入QQ群181398081詢問
下載安裝
UWP(Windows10)
Windows10 使用者
考慮到應用商店經常大姨媽,就沒有上傳到商店了,大家到下面地址下載安裝
下載好安裝包,解壓。
第一次安裝,需要安裝證照,請按照下圖,使用PowerShell開啟Add-AppDevPackage.ps1,一路接受就安裝完畢
後面如果工具有更新,可以下載最新的,然後點選FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安裝
WPF(Windows7/Windows8)
Windows7/Windows8 使用者
下載解壓,點選setup.exe安裝
Web(Silverlight)
首先需要安裝Silverlight
Mac的使用者下載Mac的,Windows使用者下載Windows的
然後就是瀏覽器問題了,因為支援Silverlight的瀏覽器是有限的,除了Internet Explorer支援,以下版本的瀏覽器也支援.
在Mac上面Firefox可用
由於中文字型問題,包含了中文字型檔案,第一次會比較久,請耐心等待
稍後會更新如何使用Safari開啟的
使用
左邊是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 官方推薦 駝峰式命名小駝峰
屬性排序
對屬性進行排序
排序選項: 保持原樣,升序排列,降序排序
新增保護方法
是否新增保護方法。資料型別全方位保護/陣列全方位保護 這2個開啟的時候會生成方法。第一次使用的時候開啟就可以了,你可以方法提出去,後面生成Dart就沒有必要每個檔案裡面都要這2個方法了。
檔案頭部資訊
可以在這裡新增copyright,improt dart,建立人資訊等等,支援[Date yyyy MM-dd]來生成時間,Date後面為日期格式。
比如[Date yyyy MM-dd] 會將你生成Dart程式碼的時間按照yyyy MM-dd的格式生成對應時間
屬性訪問器型別
點選格式化之後,右邊會顯示視覺化的json類結構,在右邊一列,就是屬性訪問器型別設定
選項:預設,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 Candies全家桶,真香。