在一個 App 中,資料類是必不可少。
我們需要從介面請求資料(通常為 JSON 格式),然後解析成物件,再使用它。
看看在 Flutter 中如何定義可解析的資料類。
1.定義資料類
class User {
final String name;
final String email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() =>
{
'name': name,
'email': email,
};
}
複製程式碼
其中,你必須實現 fromJson(Map<String, dynamic> json)
和 toJson()
兩個函式。
在進行資料轉換時會用到它們。
2.JsonString To Object
// 解析Json
var userMap = jsonDecode(data);
var user = User.fromMap(userMap);
複製程式碼
在呼叫資料類的 fromMap()
函式前,需要先呼叫 jsonDecode()
將 JsonString 轉換為一個 Map。
jsonDecode()
是 dart:convert
中的一個函式,因此我們需要匯入 dart:convert
。
3.Object To JsonString
// 物件轉Json
var userJson = jsonEncode(user);
複製程式碼
使用 dart:convert
中的 jsonEncode()
就可以將一個物件轉換為 JsonString,它會呼叫資料類的 toJson()
。
4.輔助外掛
從上面的例子可以看出,要定義一個複雜的資料類還是很花費精力的。
幸運的是,有人制作了外掛幫助我們自動的去完成這件事。
你可以在 AndroidStudio 的 Plugin 管理器中下在這個外掛。
它的名字叫:dart_json_format。
下載好外掛後,重啟 AndroidStudio。
然後通過 command + N (或者編輯框內右鍵選擇 Generate) 喚出如下彈窗,選擇 dart json format
。
接著會出現如下彈窗,將你的 json 資料字串貼上,點選確定。
很好,資料類已經生成了!
比起官方提供的 複雜方法 ,這真是太簡單了!