前言
Json這東西在大部分開發中是不可少的。所以接下來羅列幾種最近學習Flutter中個人常用的幾種Json轉Object的方式。
網頁工具
某大神提供的JSON to Dart的網頁版工具,點進去你就會用了。如圖,簡單明瞭,沒什麼可說。
目前發現的缺點陣列格式json無法直接轉
json_serializable
剛開始學習的時候在某部落格看到的(忘記是哪個了),整體操作比較繁瑣。以下是該工具的GitHub地址,及使用步驟。
github
整合
在pubspec.yaml檔案中新增dio和json_serializable的相關外掛
dependencies:
flutter:
sdk: flutter
dio: ^2.1.3 #網路請求
json_annotation: ^0.2.3
dev_dependencies:
flutter_test:
sdk: flutter
#這兩個是dev的,不要放到上面去了哦
build_runner: ^0.9.0
json_serializable: ^2.0.00
複製程式碼
建立model
通過這個網址生成dar檔案,效果如下圖:
生成的
with
混合類 如果沒用可刪除
命令生成.g檔案
在專案根目錄下輸入命令:flutter packages pub run build_runner build
,
完成之後會在bean.dart
同級目錄下,自動建立一個名為bean.g.dart
的檔案
如果有其他.g檔案存在影響,可用這個命令`flutter packages pub run build_runner build --delete-conflicting-outputs`
FlutterJsonBeanFactory外掛
外掛安裝
使用AndroidStudio/Idea
的朋友可以到Setting->Plugins
中安裝
使用
在你要寫bean的目錄右擊->New->dart bean class File from JSON,如圖:
在彈出的介面寫上檔名,粘上json格式
- 生成的檔名後面會自動加上
_entity
- 同第一個一樣,陣列格式的json也無法直接生成
手寫
你懂的!
PS:關於陣列json
如下格式json陣列,在工具1跟3是無法直接生成的。
[
{
"howlong": "30",
"id": "1",
"name": "一個月",
"price": "50.05"
}
]
複製程式碼
這一類的可以直接生成陣列內的Object物件,然後再對應檔案新增獲取物件的方法即可,如:
List<Bean> getBeanList(List<dynamic> list){
List<Bean> result = [];
list.forEach((item){
result.add(Bean.fromJson(item));
});
return result;
}
複製程式碼
尾記
因時常會忘記,所以這就當一個小總結吧。各位道友可根據不同場景選擇使用,也歡迎推薦其他的方式。如有錯誤,請指正。