| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
受zzz40500/GsonFormat启发,将JSONObject格式的String解析成dart语言的实体类
dart 语言更新为 null-safety 语法后,本工具生成的实体类代码就无法通过静态检查,具体细节可以参考迁移Flutter项目到空安全的血泪史——有血、有泪、有💩。
主要的问题有:
针对如上问题,本次更新做出如下修改:
除此之外,由于发现某些三方库会尝试调用对象的 toJson() 方法来实现打印输出或序列化,所以添加 String toJson() => this.toString(); 的方法映射。
See More: JSONFormat4Flutter v0.9 更新说明
反序列化(json字符串->对象)
将生成的代码粘贴到dart源文件中后,即可以在任意地方导包使用,一般方法为(以http.get请求为例):
var response = await HTTP.get(url);
var resp = BeanResp(response.body);也就是说,将请求到的json内容作为参数传递给BeanResp的默认构造函数,这样生成的resp对象即是请求到内容的实体。 需要说明的是,默认构造既可以传入json的原始字符串,也可以传入已经用原生json.decode()方法解析过的json对象(这主要是为了照顾使用dio库进行数据请求时结果数据会被自动解析成json对象的情况)。 只有顶级对象拥有默认构造方法,而其他子层级对象将使用xxx.fromJson()的命名构造进行对象创建。
序列化(对象->json字符串)
与官方样例的处理方式不同,直接调用对象的toString()方法即可得到json字符串完成序列化操作
手动创建对象
为了方便大部分使用场景下的便利性,bean的默认构造函数被用来实现反序列化,所以如果想要在代码中手动传参创建bean对象,可以使用xxx.fromParams()命名构造来完成。
在 Release 页面中,选择下载对应平台最新的二进制文件后——
在程序目录打开终端后执行:chmod u+x Formatter_linux && ./Formatter_linux
在程序目录打开终端后执行:chmod u+x Formatter_mac && ./Formatter_mac
直接双击运行 Formatter_win.exe
没有python运行环境的用户需要先安装python
mac中可以使用如下命令安装
brew install python3 brew install pip3
pip3是python3的包管理工具
brew 可以参考下面的链接
运行库的时候会可能会提示
Traceback (most recent call last):
File "formater.py", line 8, in <module>
from mainwindow import *
File "/Users/cjl/IdeaProjects/flutter/sxw-flutter-app/JSONFormat4Flutter/mainwindow.py", line 9, in <module>
from PyQt5 import QtCore, QtGui, QtWidgets
ModuleNotFoundError: No module named 'PyQt5'
这时候可以直接用 pip3 install PyQt5 pip3 install pyperclip 等待安装完成
(注:brew安装最新版python3可能会出现ssl模块丢失导致pip3无法正常使用,此时也可以考虑直接在python官网下载pkg包方式安装python)
后面使用就是在命令行敲入 python3 formatter.py
参考 issue1 ,如下图,使用5.7.1及之前版本的pyqt5
nuitka3 --clang --standalone --windows-disable-console --linux-onefile-icon=logo.png --output-dir=output --show-progress --plugin-enable=qt-plugins --onefile formatter.pypyinstaller -F -w -i logo.ico formatter.py| Back | FazBrowse Home | New Git URL |