Flutter 功能最全的JsonToDart工具(桌面Web海陸空支持)

JsonToDart 相關(guān)文章

更新已支持Mac

為什么要做這個(gè)工具呢眶拉?

1.老是被服務(wù)端坑仔掸,各種數(shù)據(jù)類(lèi)型不對(duì)

2.參數(shù)命名混亂,強(qiáng)迫癥根本不能忍

3.官方的不能自定義噪矛,然后我之前用的大佬們寫(xiě)的工具debuggerx01大佬量蕊,低調(diào)大佬,但是有些需求艇挨,還是不好老是麻煩大佬残炮,就想著自己寫(xiě)方便一些

工具使用UWP,WPFSilverlight開(kāi)發(fā),原因如下:

1.我是一個(gè)C#喵缩滨,從開(kāi)始學(xué)習(xí)java凳干,到入坑微軟做Xaml,Silverlight痪枫,WPF,WindowsPhone残腌,UWP 全套靈活運(yùn)用。在最大的componentone/grapecity控件公司呆過(guò)幾年鸠删,轉(zhuǎn)做Flutter之后繼續(xù)專注自定義組件 FlutterCandies, 希望能分享更多的Flutter組件抱完,為大家提供方便。 那個(gè)刃泡。巧娱。話題扯遠(yuǎn)了。烘贴〗恚總結(jié)一下,我覺(jué)得用UWP/WPF/Silverlight 海陸空一套代碼完成這個(gè)工具會(huì)很方便

2.也不是沒(méi)有考慮用Dart寫(xiě)桨踪,畢竟支持web/windows/mac老翘。但是我這個(gè)工具界面上面的布局,需要很多輸入框進(jìn)行自定義修改锻离。Flutter現(xiàn)在的沒(méi)有提供舒服的雙向綁定方式铺峭,想一想每一個(gè)輸入框就要一個(gè)control,頭有點(diǎn)大。汽纠。

功能最全面的Json轉(zhuǎn)換Dart的工具卫键,支持Windows,Mac虱朵,Web以及Linux莉炉。

相關(guān):

Flutter Candies qq群181398081

下載

平臺(tái) 語(yǔ)言 描述 代碼/安裝包地址
windows C# uwp構(gòu)建钓账,運(yùn)行環(huán)境windows10,x86/x64 windows-uwp.zip
windows C# wpf構(gòu)建絮宁,運(yùn)行環(huán)境windows10/windows8/widnows7梆暮,x86/x64 windows-wpf.zip
windows dart flutter構(gòu)建, 使用官方方式編譯,x64 ,debug版本 windows-x64-flutter.zip
windows dart flutter構(gòu)建, 使用go-flutter編譯,x64 ,debug版本 windows-x64-go-flutter.zip
mac dart flutter構(gòu)建,使用go-flutter編譯(官方方式,未找到產(chǎn)物) mac-go-flutter.zip
web C# silverlight構(gòu)建, 需要安裝silverlight插件,有瀏覽器限制 網(wǎng)頁(yè)地址帶字體文件網(wǎng)頁(yè)地址
web dart flutter-web構(gòu)建 網(wǎng)頁(yè)地址
linux dart flutter構(gòu)建, 使用官方方式編譯羞福,(沒(méi)有環(huán)境測(cè)試惕蹄,假裝可以用) 代碼地址

安裝

UWP(Windows10)

Windows10 用戶

考慮到應(yīng)用商店經(jīng)常大姨媽,就沒(méi)有上傳到商店了治专。

下載好安裝包卖陵,解壓。

第一次安裝张峰,需要安裝證書(shū)泪蔫,請(qǐng)按照下圖,使用PowerShell打開(kāi)Add-AppDevPackage.ps1喘批,一路接受就安裝完畢

image

后面如果工具有更新撩荣,可以下載最新的,然后點(diǎn)擊FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安裝

image

WPF(Windows7/Windows8)

Windows7/Windows8 用戶

下載解壓饶深,點(diǎn)擊setup.exe安裝

image

Silverlight(Web)

帶字體文件是因?yàn)榭赡苡衼y碼餐曹,由于中文字體問(wèn)題,包含了中文字體文件敌厘,第一次會(huì)比較久台猴,請(qǐng)耐心等待

首先需要安裝Silverlight

Mac的用戶下載Mac的,Windows用戶下載Windows的

然后就是瀏覽器問(wèn)題了俱两,因?yàn)橹С諷ilverlight的瀏覽器是有限的饱狂,除了Internet Explorer支持,以下版本的瀏覽器也支持.

image

Mac Safari 12.0以下的可以嘗試這樣開(kāi)啟插件

Mac Firefox這個(gè)版本能使用

Flutter(Mac)

點(diǎn)擊json_to_dart啟動(dòng)

image

Flutter(Windows_x64)

flutter官方產(chǎn)物或者go-flutter產(chǎn)物為exe宪彩,點(diǎn)擊exe啟動(dòng)

使用

image

左邊是json的輸入框以及最后Dart生成的代碼休讳,右邊是生成的Json類(lèi)的結(jié)構(gòu)

格式化

點(diǎn)擊格式化按鈕,將json轉(zhuǎn)換為右邊可視化的json類(lèi)結(jié)構(gòu)

更多設(shè)置

設(shè)置會(huì)全部自動(dòng)保存(flutter版本除外尿孔,需要手動(dòng)保存)俊柔,一次設(shè)置終身受益

數(shù)據(jù)類(lèi)型全方位保護(hù)

大家一定會(huì)有被服務(wù)端坑的時(shí)候吧? 不按規(guī)定好了的數(shù)據(jù)類(lèi)型傳值活合,導(dǎo)致json整個(gè)解析失敗雏婶。

打開(kāi)這個(gè)開(kāi)關(guān),就會(huì)在獲取數(shù)據(jù)的時(shí)候加一層保護(hù)芜辕,代碼如下

T asT<T>(dynamic value) {
  if (value is T) {
    return value;
  }
  if (value != null) {
    final String valueS = value.toString();
    if (0 is T) {
      return int.tryParse(valueS) as T;
    } else if (0.0 is T) {
      return double.tryParse(valueS) as T;
    } else if ('' is T) {
      return valueS as T;
    } else if (false is T) {
      if (valueS == '0' || valueS == '1') {
        return (valueS == '1') as T;
      }
      return bool.fromEnvironment(value.toString()) as T;
    }
  }
  return null;
}

數(shù)組全方位保護(hù)

在循環(huán)數(shù)組的時(shí)候尚骄,一個(gè)出錯(cuò)块差,導(dǎo)致json整個(gè)解析失敗的情況侵续,大家遇到過(guò)吧倔丈?

打開(kāi)這個(gè)開(kāi)關(guān),將對(duì)每一次循環(huán)解析進(jìn)行保護(hù)状蜗,代碼如下

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

遍歷數(shù)組次數(shù)

在服務(wù)器返回的數(shù)據(jù)中需五,有時(shí)候數(shù)組里面不是每一個(gè)item都帶有全部的屬性,

如果只檢查第一個(gè)話轧坎,會(huì)存在屬性丟失的情況

你可以通過(guò)多次循環(huán)來(lái)避免丟失屬性

選項(xiàng)有1宏邮,20,99

99就代表循環(huán)全部進(jìn)行檢查

屬性命名

屬性命名規(guī)范選項(xiàng):保持原樣缸血,駝峰式命名小駝峰蜜氨,帕斯卡命名大駝峰,匈牙利命名下劃線

Dart 命名規(guī)范

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

屬性排序

對(duì)屬性進(jìn)行排序

排序選項(xiàng): 保持原樣捎泻,升序排列飒炎,降序排序

添加保護(hù)方法

是否添加保護(hù)方法。數(shù)據(jù)類(lèi)型全方位保護(hù)/數(shù)組全方位保護(hù) 這2個(gè)開(kāi)啟的時(shí)候會(huì)生成方法笆豁。第一次使用的時(shí)候開(kāi)啟就可以了郎汪,你可以方法提出去,后面生成Dart就沒(méi)有必要每個(gè)文件里面都要這2個(gè)方法了闯狱。

文件頭部信息

可以在這里添加copyright煞赢,improt dart,創(chuàng)建人信息等等哄孤,支持[Date yyyy MM-dd]來(lái)生成時(shí)間照筑,Date后面為日期格式。

比如[Date yyyy MM-dd] 會(huì)將你生成Dart代碼的時(shí)間按照yyyy MM-dd的格式生成對(duì)應(yīng)時(shí)間

屬性訪問(wèn)器類(lèi)型

點(diǎn)擊格式化之后录豺,右邊會(huì)顯示可視化的json類(lèi)結(jié)構(gòu)朦肘,在右邊一列,就是屬性訪問(wèn)器類(lèi)型設(shè)置

image

選項(xiàng):默認(rèn)双饥,F(xiàn)inal媒抠,Get,GetSet

頂部設(shè)置修改咏花,下面子項(xiàng)都會(huì)修改趴生。你也可以單獨(dú)對(duì)某個(gè)屬性進(jìn)行設(shè)置。

修改json類(lèi)信息

點(diǎn)擊格式化之后昏翰,右邊會(huì)顯示可視化的json類(lèi)結(jié)構(gòu)苍匆。

第一列為在json中對(duì)應(yīng)的key

第二列為屬性類(lèi)型/類(lèi)的名字。如果是類(lèi)名棚菊,會(huì)用黃色背景提示

第三列是屬性的名字

輸入選項(xiàng)如果為空浸踩,會(huì)報(bào)紅提示

生成Dart

做好設(shè)置之后,點(diǎn)擊生成Dart按鈕统求,左邊就會(huì)生成你想要的Dart代碼检碗,并且提示“Dart生成成功据块,已復(fù)制到剪切板”,可以直接復(fù)制到你的Dart文件里面

是不是很方便很人性化折剃,歡迎Start另假,F(xiàn)ork,666三連怕犁。

最后放上 Josn To Dart边篮,如果你有什么不明白或者對(duì)這個(gè)方案有什么改進(jìn)的地方,請(qǐng)告訴我奏甫,歡迎加入Flutter Candies戈轿,一起生產(chǎn)可愛(ài)的Flutter 小糖果(QQ群:181398081)

再次邀請(qǐng),有心為Flutter生態(tài)做貢獻(xiàn)的小伙伴加入Flutter Candies阵子,一起開(kāi)心地寫(xiě)bug凶杖。

image

最最后放上Flutter Candies全家桶,真香款筑。

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末智蝠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奈梳,更是在濱河造成了極大的恐慌杈湾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攘须,死亡現(xiàn)場(chǎng)離奇詭異漆撞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)于宙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)浮驳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人捞魁,你說(shuō)我怎么就攤上這事至会。” “怎么了谱俭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵奉件,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我昆著,道長(zhǎng)县貌,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任凑懂,我火速辦了婚禮煤痕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己摆碉,他們只是感情好祟敛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著兆解,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跑揉。 梳的紋絲不亂的頭發(fā)上锅睛,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音历谍,去河邊找鬼现拒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛望侈,可吹牛的內(nèi)容都是我干的印蔬。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼脱衙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侥猬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起捐韩,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤退唠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后荤胁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瞧预,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年仅政,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垢油。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡圆丹,死狀恐怖滩愁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辫封,我是刑警寧澤惊楼,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站秸讹,受9級(jí)特大地震影響檀咙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜璃诀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一弧可、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劣欢,春花似錦棕诵、人聲如沸裁良。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)价脾。三九已至,卻和暖如春笛匙,著一層夾襖步出監(jiān)牢的瞬間侨把,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工妹孙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秋柄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓蠢正,卻偏偏與公主長(zhǎng)得像骇笔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嚣崭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345