日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Flutter中的JSON解析

發(fā)布時(shí)間:2023/12/10 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter中的JSON解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????在客戶端開發(fā)的過程中,JSON的序列化與反序列化是一個(gè)常見的操作,有非常好用的gson,fastjson。由于Flutter中是禁止使用反射的,所以在flutter中并沒有這樣的庫,所以在flutter中使用json的解析還是比較繁瑣的,不像java那么簡(jiǎn)單。下面總結(jié)常用的json解析:

一、使用dart:convert內(nèi)置庫解析

1、示例一

(1)json結(jié)構(gòu)

{
? ? "callback":"success",
? ? "data":"張三"
}

(2)將json轉(zhuǎn)為Map

const Map<String, dynamic> json1 = {"callback": "success", "data": "張三"};

(3)創(chuàng)建json的對(duì)象,創(chuàng)建解析工廠

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結(jié)構(gòu)

{
? ? "callback":"success",
? ? "data":[
? ? ? ? "張三",
? ? ? ? "李四"
? ? ]
}?

(2)將json轉(zhuǎn)為Map

const Map<String, dynamic> json2 = {"callback": "success", "data": ["張三", "李四"]};

(3)創(chuàng)建json的對(duì)象,創(chuàng)建解析工廠

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
? ? }
}

const Map<String, dynamic> json2 = {"callback": "success","data": {"name": "張三", "age": 30} };class Json1 {String? callback;Data? data;Json1({this.callback, this.data});factory Json1.fromJson(Map<String, dynamic> json) {return Json1(callback: json['callback'],data: Data.fromJson(json['data']),);} }class Data {String? name;int? age;Data({ this.name, this.age});factory Data.fromJson(Map<String, dynamic> json) {return Data(name: json['name'],age: json['age'],);} }

打印:

二、使用工具解析

?????????工具解析比較復(fù)雜的json結(jié)構(gòu)十分的方便,下面介紹兩種:

1、使用在線網(wǎng)站解析

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

會(huì)自動(dòng)將json轉(zhuǎn)為dart對(duì)象,直接使用。

2、使用Android Studio自帶的插件

使用方法:選中包名,右鍵,選擇New->選擇插件Json to dart。

這兩種方式生成的類一樣。

使用方法:

Xxx xx = Xxx.fromJson(json);

注意:參數(shù)類型是Map<String, dynamic>形式的,不能是字符串,或者轉(zhuǎn)義字符串,否則報(bào)錯(cuò):

type ‘String‘ is not a subtype of type ‘int‘ of ‘index‘

總結(jié)

以上是生活随笔為你收集整理的Flutter中的JSON解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。