Flutter工具:Dart中幾種常用的Json轉Object方式

牛肉羹一碗發表於2019-08-16

前言

Json這東西在大部分開發中是不可少的。所以接下來羅列幾種最近學習Flutter中個人常用的幾種Json轉Object的方式。

網頁工具

某大神提供的JSON to Dart的網頁版工具,點進去你就會用了。如圖,簡單明瞭,沒什麼可說。

Flutter工具:Dart中幾種常用的Json轉Object方式

目前發現的缺點陣列格式json無法直接轉

json_serializable

剛開始學習的時候在某部落格看到的(忘記是哪個了),整體操作比較繁瑣。以下是該工具的GitHub地址,及使用步驟。

github

github.com/dart-lang/j…

整合

在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檔案,效果如下圖:

Flutter工具:Dart中幾種常用的Json轉Object方式

生成的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,如圖:

Flutter工具:Dart中幾種常用的Json轉Object方式
在彈出的介面寫上檔名,粘上json格式
Flutter工具:Dart中幾種常用的Json轉Object方式

  • 生成的檔名後面會自動加上_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;
  }
複製程式碼

尾記

因時常會忘記,所以這就當一個小總結吧。各位道友可根據不同場景選擇使用,也歡迎推薦其他的方式。如有錯誤,請指正。

相關文章