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 ...
随机推荐
- Nginx反向代理的使用
一.Nginx的基本命令 nginx:启动 nginx nginx -t :测试配置文件是否有语法错误 nginx -s reopen:重启Nginx nginx -s reload:重新加载Ngin ...
- 总结java中创建并写文件的5种方式
在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files. ...
- 数据处理 | pandas入门专题——离散化与one-hot
今天是pandas数据处理专题第7篇文章,可以点击上方专辑查看往期文章. 在上一篇文章当中我们介绍了对dataframe进行排序以及计算排名的一些方法,在今天的文章当中我们来了解一下dataframe ...
- CF1256A Payment Without Change 题解
OI生涯打的第一场CF比赛,写篇题解纪念一下吧 ------------可以想到先尽量用面值为1的硬币来凑,然后再用面值为n的硬币来补足.先算出用上所有面值为1的硬币还差多少钱,然后判断用面值为n的硬 ...
- Vue.$set的使用场景
有这样一个需求,用户可以增加多个输入框可以编辑: 实现的思路很简单,点击增加的时候,往一个数组里面push一条数据即可: <template> <div> <di ...
- Android开发之SDCardUtils工具类。java工具详细代码,附源代码。判断SD卡是否挂载等功能
package com.xiaobing.zhbj.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputSt ...
- 发生错误 1069 sqlserver
---------------------------SQL Server 服务管理器---------------------------发生错误 1069 - (由于登录失败而无法启动服务.),此 ...
- DLX AlgorithmX
AlgorithmX精确覆盖: https://en.wikipedia.org/wiki/Knuth's_Algorithm_X DLX的基础算法 https://zh.wikipedia.org/ ...
- 【原创】如何优雅的转换Bean对象
背景 我们的故事要从一个风和日丽的下午开始说起! 这天,外包韩在位置上写代码-外包韩根据如下定义 PO(persistant object):持久化对象,可以看成是与数据库中的表相映射的 java 对 ...
- Mybatis源码学习第七天(PageHelper分析)
其实我本来是不打算写这个PageHelper的,但是后来想了想,还是写了吧!现在市场用Mybatis的产品分页应该差不多都是用PageHelper来实现的,毕竟Mybatis的分页rowbound.. ...