javascript
Flutter中的JSON解析
????????在客戶端開發的過程中,JSON的序列化與反序列化是一個常見的操作,有非常好用的gson,fastjson。由于Flutter中是禁止使用反射的,所以在flutter中并沒有這樣的庫,所以在flutter中使用json的解析還是比較繁瑣的,不像java那么簡單。下面總結常用的json解析:
一、使用dart:convert內置庫解析
1、示例一
(1)json結構
{
? ? "callback":"success",
? ? "data":"張三"
}
(2)將json轉為Map
const Map<String, dynamic> json1 = {"callback": "success", "data": "張三"};(3)創建json的對象,創建解析工廠
class Json1 {String? callback;String? data;Json1({this.callback, this.data});factory Json1.fromJson(Map<String, dynamic> json) {return Json1(callback: json['callback'],data: json['data'],);} }(4)打印使用
Json1 j1 = Json1.fromJson(json1); print(j1.data); print(j1.callback);2、示例二
(1)json結構
{
? ? "callback":"success",
? ? "data":[
? ? ? ? "張三",
? ? ? ? "李四"
? ? ]
}?
(2)將json轉為Map
const Map<String, dynamic> json2 = {"callback": "success", "data": ["張三", "李四"]};(3)創建json的對象,創建解析工廠
class Json1 {String? callback;List<String>? data;Json1({this.callback, this.data});factory Json1.fromJson(Map<String, dynamic> json) {return Json1(callback: json['callback'],data: json['data'],);} }(4)打印使用
Json1 j1 = Json1.fromJson(json2); j1.data?.forEach((element) {print(element); }); print(j1.callback);3、示例三?
{
? ? "callback":"success",
? ? "data":{
? ? ? ? "name":"張三",
? ? ? ? "age":30
? ? }
}
打印:
二、使用工具解析
?????????工具解析比較復雜的json結構十分的方便,下面介紹兩種:
1、使用在線網站解析
https://javiercbk.github.io/json_to_dart/
會自動將json轉為dart對象,直接使用。
2、使用Android Studio自帶的插件
使用方法:選中包名,右鍵,選擇New->選擇插件Json to dart。
這兩種方式生成的類一樣。
使用方法:
Xxx xx = Xxx.fromJson(json);
注意:參數類型是Map<String, dynamic>形式的,不能是字符串,或者轉義字符串,否則報錯:
type ‘String‘ is not a subtype of type ‘int‘ of ‘index‘
總結
以上是生活随笔為你收集整理的Flutter中的JSON解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二次北京之行-游颐和园
- 下一篇: Vim的使用和快捷键介绍