Flutter 之資料解析

靜默的小貓發表於2021-03-27

Dart JSON編碼器和解碼器

使用dart:convert進行json解析

  • Flutter採用Dart語言進行開發,那dart是如何進行json解析的呢?
  • 在dart中有個內建的json解析器: dart:convert ,對於較小專案可以藉助它來進行手動JSON序列化。

1. json 轉 map

import 'dart:convert';
...
const jsonString =
    "{ \"name\": \"Jack\"}";
//json轉map
Map<String, dynamic> jsonMap = jsonDecode(jsonString);
print('name:${jsonMap['name']}');
複製程式碼

使用jsonDecode方法,會將json字串解析成Map<String, dynamic> ,然後根據需要從map中查詢所需的值就可以了,它沒有外部依賴或其它的設定,對於小專案很方便。

2. map 轉 json

String jsonStr = jsonEncode(jsonMap);
print('json:$jsonStr');
複製程式碼

jsonEncode可以很輕鬆的將object轉成json字串。 當您的專案變大時,手動編寫序列化邏輯可能變得難以管理且容易出錯。如果您在訪問未提供的JSON字 段時輸入了一個錯誤的欄位,則您的程式碼將會在執行時會引|發錯誤。 如果您的專案中JSON model並不多,並且希望快速測試一下,那麼手動序列化可能會很方便。

3.選擇model還是 Map<String, dynamic>?

  • 對於小型專案並且json中欄位不多的情況下可以直接使用Map<String, dynamic>來從中獲取值更方便

  • 但對於大項專案或者json中的欄位多且複雜時推薦大家使用model

原因:那麼不推薦使用Map<String, dynamic>因為這樣會有不小的副作用:比如你需要知道json中每個欄位的名字,並且在各個使用的地方都需要保障這個名字沒有拼寫錯誤,大量的欄位名不僅會減少程式碼的可讀性,同時也會降低開發效率增大維護成本

相關文章