Flutter -------- 解析JSON數據

SON序列化方法:git

手動序列化和反序列化
經過代碼生成自動序列化和反序列化github

手動JSON序列化是指使使用dart:convert中內置的JSON解碼器。它將原始JSON字符串傳遞給JSON.decode() 方法,而後在返回的Map<String, dynamic>中查找所需的值。 它沒有外部依賴或其它的設置,對於小項目很方便。json

當您的項目變大時,手動編寫序列化邏輯可能變得難以管理且容易出錯。若是您在訪問未提供的JSON字段時輸入了一個錯誤的字段,則您的代碼將會在運行時會引起錯誤。ide


一個簡單的案列post

接口請求的JSON數據jsonp

接口連接:https://jsonplaceholder.typicode.com/posts/1網站

{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

 

 final responseJson = json.decode(response.body);

 Map<String, dynamic> newTitle = responseJson ;

這種就是很簡單的解析了

取值和Java Map同樣了

print(newTitle['title']);//打印title的值

 

另外一種 實體類解析了,模型類中序列化JSON類ui

//類的解析方式
 final responseJson = json.decode(response.body);
    print(responseJson.toString());
   
    Post postBean = Post.fromJson(responseJson);

 


簡單的數據寫fromJson還好,但複雜的手寫fromJson,toJson不太友好。spa

以下圖的列表數據,多層且分頁code


咱們能夠使用 代碼生成庫序列化json

json_serializable package包

它是一個自動化的源代碼生成器,能夠爲咱們生成JSON序列化模板

依賴

 

dependencies:
  json_annotation: ^2.0.0


dev_dependencies:
  build_runner: ^1.0.0
  json_serializable: ^2.0.0

 

但這種我也不用,我的以爲有點麻煩,仍是要寫實體類代碼


給你們推薦個網站,複製JSON數據進去直接生成,Dart的實體類 和AndroidGsonFormat同樣

 

效果圖:(上圖接口請求的數據生成Dart實體)

 

 

網址:https://javiercbk.github.io/json_to_dart/

相關文章
相關標籤/搜索