在客户端开发的过程中,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‘

Flutter中的JSON解析相关推荐

  1. Android JSONObject – Android中的JSON解析

    Android JSONObject is used for JSON parsing in android apps. In this tutorial we'll discuss and impl ...

  2. 江在川上曰:js中的JSON解析和序列化

    江在川上曰:js中的JSON解析和序列化 JSON解析和序列化 JSON是javascript的一个严格的子集,利用了javacript中的一些模式来表示结构化数据.他只是一种数据格式,并非一种编程语 ...

  3. flutter 动画json_Flutter 中的 JSON 解析

    JSON 是我们开发中最常使用的一种数据格式,这篇文章中,我们主要看看在开发中最常见的几种格式的 JSON 数据在 Flutter 中的解析: 以下案例中,我们都会将json文件放到本地,也就是 as ...

  4. Flutter中使用flutter_html解析html文件

    1. 安装插件 配置 flutter_html 插件. dependencies:flutter:sdk: flutterflutter_localizations:sdk: flutterdate_ ...

  5. Android中的JSON解析方式:json; Gson ; Fastjson

    本文主要介绍Json数据的解析 ----a,json数据的介绍 ----b,json数据的解析 ----c,gson数据的解析,谷歌公司的一种格式 ----d,fastjson数据的解析,阿里巴巴的一 ...

  6. iOS中的JSON解析

    一.在iOS中,JSON的常见解析方案有4种 (1)第三方框架:JSONKit.SBJson.TouchJSON(性能从左到右,越差) (2)苹果原生(自带):NSJSONSerialization( ...

  7. Flutter开发之JSON解析

    对于JSON格式的数据交互,想必大家不会陌生.JSON(全称JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,JSON因为具有易于人阅读和编写,同时 ...

  8. Android 中的Json解析工具fastjson 、序列化、反序列化

    Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括"序列化"和&qu ...

  9. pythonjson数据解析错误是什么意思_Python中的JSON解析错误

    我使用Python2.7.6来解析一个JSON文件,但是我遇到了一个错误,我不确定原因.我的Python第一次处理这个问题可能有点错.在 下面是我解析数据的python代码:import json f ...

  10. 微信小程序JS中写Json解析for 数组的用法

    前言: 1 JS作为小程序的函数库,大家可以作为一个模块编写好自己的函数,然后就可以随心所欲的去创作了.Json的调用,比前面我写的更加简洁写,直接贴代码,应该更加容易懂了. 2 刚入手小程序有些语言 ...

最新文章

  1. smart-socket如何实现字符串通信
  2. [笔记]React+Cordova踩坑
  3. Golang 为什么不能直接将任意类型数组赋值给 []interface{}完成泛型操作
  4. 饥荒海难机器人怎么用_饥荒开发商又一款神作,难到吐血的生存游戏!
  5. opendir 从不兼容的指针类型赋值
  6. [vue] prop验证的type类型有哪几种?
  7. Winform开发框架之终极应用 - 伍华聪 - 博客园
  8. java坦克大战图片素材包_坦克大战图片素材
  9. 谦虚的向大家问个技术问题,树型结构的排序问题
  10. php excel 高度,PHPExcel,自动调整行高
  11. 爬虫---数据的提取
  12. 爱荷华州立 计算机博士,2020年美国爱荷华州立大学博士全奖招生
  13. Transmission搭建BT下载服务器
  14. 【Python】PEP8规范中一些需要注意的地方
  15. 人民币小写转大写的一般方法
  16. 慈航公益仲恺义工大区和爱心企业助力探亲日慈善活动
  17. 沟通的艺术:看人入里,看出人外 - part6
  18. 四川省计算机应用教材,四川省电子科技大学计算机应用技术
  19. android 7.1内存泄漏,android - Android 7.1和7本机崩溃:libc.so tgkill + 12 - 堆栈内存溢出...
  20. matlab与maple互联,Maple与Matlab

热门文章

  1. JDK1.8下载 jdk1.8-64下载 国内源
  2. 记录一个好用ER图软件dbschema
  3. Android app 跳转微信小程序
  4. FFmpeg解码H264视频裸流(直接可用)
  5. matlab中fft定点运算,可用于嵌入式计算的定点FFT算法 (转载)
  6. 【认知无线网络】认知无线网络基础知识学习
  7. 5行python代码帮你搞定百度文库复制问题
  8. 泛微oa服务器文件,泛微OA根据文档的docid查询文档附件存放的路径
  9. 背包问题-递归思想(C语言)
  10. GD32VF103移植SVSTEMVIEW