flutter json_annotation和json_serializable处理json数据序列化
flutter json_annotation和json_serializable处理json数据序列化
导包
dependencies:
json_annotation: ^2.4.0 dev_dependencies:
fluttertoast: ^2.0.3
json_serializable: ^3.0.0
build_runner: ^1.6.0
创建Author实体类(举例子,新建文件author.dart)
author.dart
import 'package:json_annotation/json_annotation.dart'; part 'author.g.dart'; @JsonSerializable() //注解
class Author {
String name;
String title;
int id;
Author({this.name, this.title, this.id}); factory Author.fromJson(Map<String, dynamic> json) => _$AuthorFromJson(json); Map<String, dynamic> toJson(Author instance) => _$AuthorToJson(instance);
}
效果图:

这里有几点需要注意的
1、当我们初次创建Author.dart的时候,需要加入 part 'Author.g.dart'; 虽然系统会提示报错,但是不必紧张,这个我们一会生成Author.g.dart文件所必须的条件,我们暂时不要管它报不报错
2、在需要转换的实体dart类前 加入@JsonSerializable()注解,表示需要json序列话处理
3、fromJson() 方法和 toJson()方法的写法是固定模式的,大家按模板修改就行
接下来我们就该见证奇迹的发生了
我们cd到项目的根目录,然后使用 flutter packages pub run build_runner build 这条指令去生成Author.g.dart文件
修改图如下:

然后我们就会在Author.dart的下面发现一个Author.g.dart文件,到此结束,我们开始验证是否有效
编写测试类
import 'package:flutter/material.dart';
import '../model/author.dart'; class NoticePage extends StatefulWidget{
@override
_NoticePageState createState() => _NoticePageState();
} class _NoticePageState extends State<NoticePage>{
void _getData() async {
var obj = {"name":"whisky", "title":'阿发生的发生阿斯蒂芬暗示法按时', "id":2020};
var c = Author.fromJson(obj);
print("作者的名字是:"+c.name);
print("作者的名字是:"+c.title);
print('${c.id}');
print('${c.id.runtimeType}');
print(c);
} @override
void initState(){
super.initState();
_getData();
} @override
Widget build(BuildContext context){
final _main = Container(
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.all(30),
child: Column(
children: [
Text('notice')
],
),
);
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: Text('我的消息',style: TextStyle(color: Colors.white)),
),
body: _main,
);
}
}
打印结果:

测试完成,谢谢大家!!!
flutter json_annotation和json_serializable处理json数据序列化的更多相关文章
- iOS - JSON 数据解析
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
- 从接口取到的JSON数据如何导入进本地SQL数据库
新手学习,求大神指点. 首先:在数据库建立表--设计字段(最好和接口说明文档里面的一致) 第一步:获取接口中的字符串:这里获取的是有转义字符的字符串 HttpWebRequest request = ...
- pyhton 从web获取json数据 保存到本地然后再读取
从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常 ...
- Dart 和 Flutter 使用json_annotation和json_serializable来处理json数据教程
在学习fultter的时候突然想到如何去处理从服务器获取的json或者将app中的对象数据转换成json上传给服务器 于是研究一下dart对json数据的处理 首先需要依赖下面的第三方库(这里要强调下 ...
- [译]Flutter JSON和序列化
[译]Flutter JSON和序列化 很难想象一个移动应用程序不需要与Web服务器通信或在某些时候容易存储结构化数据.制作网络连接的应用程序时,迟早需要消耗一些好的旧JSON. 本指南介绍了如何 ...
- Flutter -------- 解析JSON数据
SON序列化方法: 手动序列化和反序列化通过代码生成自动序列化和反序列化 手动JSON序列化是指使使用dart:convert中内置的JSON解码器.它将原始JSON字符串传递给JSON.decode ...
- js实现对json数据的序列化(兼容ie6以上浏览器)
/** * 增加对JSON数据的序列化方法, * 主要用于IE6.7不支持JSON对象的浏览器 */ var xue = xue || {};xue.json = xue.json || {}; xu ...
- Jackson序列化和反序列化Json数据完整示例
Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...
- c#中对json数据的序列化和反序列化(笔记)
今天遇到在后台中要获取json格式数据里的某些值,网上查了些资料: string jsonstr = _vCustomerService.LoadCustomerbyNumTotalData(quer ...
随机推荐
- springsession
Spring Session 一. HttpSession 回顾 1 什么是 HttpSession 是 JavaWeb 服务端提供的用来建立与客户端会话状态的对象. 二. Session 共享 1 ...
- 深入理解C++中的new/delete和malloc/free动态内存管理
malloc/free和new/delete的区别 malloc/free是C/C++标准库的函数:new/delete是C++操作符. malloc/free只是动态分配内存空间/释放空间:new/ ...
- 轻量化模型训练加速的思考(Pytorch实现)
0. 引子 在训练轻量化模型时,经常发生的情况就是,明明 GPU 很闲,可速度就是上不去,用了多张卡并行也没有太大改善. 如果什么优化都不做,仅仅是使用nn.DataParallel这个模块,那么实测 ...
- python爬取酷我音乐(收费也可)
第一次创作,请多指教 环境:Python3.8,开发工具:Pycharm 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的 ...
- android尺寸问题(转)
android尺寸问题(转) (2013-01-15 16:55:36) 转载▼ 标签: 杂谈 分类: LINUX 最近公司做的项目中涉及到屏幕自适应的问题.由于做的是电视版的项目,因此屏幕自适应问题 ...
- The Triangle (简单动态规划)
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a program that calc ...
- 如何编写高质量的C#代码(一)
从"整洁代码"谈起 一千个读者,就有一千个哈姆雷特,代码质量也同样如此. 想必每一个对于代码有追求的开发者,对于"高质量"这个词,或多或少都有自己的一丝理解.当 ...
- Python 零基础快速入门!
“人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...
- fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached解决方法!
UserAgent 就是用户代理,又叫报头,是一串字符串,相当于浏览器的身份证号,在利用爬虫爬取网站数据时,频繁更换它可以避免触发相应的反爬机制. fake-useragent对频繁更换UserAge ...
- apply用法
result.push.apply(result, document.getElementsByTagName(tag)); 但是,这里为什么要用apply呢? 因为document.getEleme ...