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中每個欄位的名字,並且在各個使用的地方都需要保障這個名字沒有拼寫錯誤,大量的欄位名不僅會減少程式碼的可讀性,同時也會降低開發效率增大維護成本