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

更新已支持Machtml

为何要作这个工具呢?java

1.总是被服务端坑,各类数据类型不对linux

2.参数命名混乱,强迫症根本不能忍git

3.官方的不能自定义,而后我以前用的大佬们写的工具debuggerx01大佬低调大佬,可是有些需求,仍是很差总是麻烦大佬,就想着本身写方便一些github

工具使用UWP,WPFSilverlight开发,缘由以下:golang

1.我是一个C#喵,从开始学习java,到入坑微软作Xaml,Silverlight,WPF,WindowsPhone,UWP 全套灵活运用。在最大的componentone/grapecity控件公司呆过几年,转作Flutter以后继续专一自定义组件 FlutterCandies, 但愿能分享更多的Flutter组件,为你们提供方便。 那个。。话题扯远了。。总结一下,我以为用UWP/WPF/Silverlight 海陆空一套代码完成这个工具会很方便web

2.也不是没有考虑用Dart写,毕竟支持web/windows/mac。可是我这个工具界面上面的布局,须要不少输入框进行自定义修改。Flutter如今的没有提供舒服的双向绑定方式,想想每个输入框就要一个control,头有点大。。json

功能最全面的Json转换Dart的工具,支持Windows,Mac,Web以及Linux。windows

相关:数组

Flutter Candies qq群181398081

下载

平台 语言 描述 代码/安装包地址
windows C# uwp构建,运行环境windows10,x86/x64 windows-uwp.zip
windows C# wpf构建,运行环境windows10/windows8/widnows7,x86/x64 windows-wpf.zip
windows dart flutter构建, 使用官方方式编译,x64 ,debug版本 windows-x64-flutter.zip
windows dart flutter构建, 使用go-flutter编译,x64 ,debug版本 windows-x64-go-flutter.zip
mac dart flutter构建,使用go-flutter编译(官方方式,未找到产物) mac-go-flutter.zip
web C# silverlight构建, 须要安装silverlight插件,有浏览器限制 网页地址带字体文件网页地址
web dart flutter-web构建 网页地址
linux dart flutter构建, 使用官方方式编译,(没有环境测试,伪装能够用) 代码地址

安装

UWP(Windows10)

Windows10 用户

考虑到应用商店常常大姨妈,就没有上传到商店了。

下载好安装包,解压。

第一次安装,须要安装证书,请按照下图,使用PowerShell打开Add-AppDevPackage.ps1,一路接受就安装完毕

后面若是工具备更新,能够下载最新的,而后点击FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安装

WPF(Windows7/Windows8)

Windows7/Windows8 用户

下载解压,点击setup.exe安装

Silverlight(Web)

带字体文件是由于可能有乱码,因为中文字体问题,包含了中文字体文件,第一次会比较久,请耐心等待

首先须要安装Silverlight

Mac的用户下载Mac的,Windows用户下载Windows的

而后就是浏览器问题了,由于支持Silverlight的浏览器是有限的,除了Internet Explorer支持,如下版本的浏览器也支持.

Mac Safari 12.0如下的能够尝试这样开启插件

Mac Firefox这个版本能使用

Flutter(Mac)

点击json_to_dart启动

Flutter(Windows_x64)

flutter官方产物或者go-flutter产物为exe,点击exe启动

使用

左边是json的输入框以及最后Dart生成的代码,右边是生成的Json类的结构

格式化

点击格式化按钮,将json转换为右边可视化的json类结构

更多设置

设置会所有自动保存(flutter版本除外,须要手动保存),一次设置终身受益

数据类型全方位保护

你们必定会有被服务端坑的时候吧? 不按规定好了的数据类型传值,致使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类结构,在右边一列,就是属性访问器类型设置

选项:默认,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全家桶,真香。

相关文章
相关标签/搜索