IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter中的JSON解析 -> 正文阅读

[移动开发]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
? ? }
}

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'],
    );
  }
}

打印:

二、使用工具解析

?????????工具解析比较复杂的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‘

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:17:18  更:2022-02-19 01:18:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:34:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码