在学习fultter的时候突然想到如何去处理从服务器获取的json或者将app中的对象数据转换成json上传给服务器

于是研究一下dart对json数据的处理

首先需要依赖下面的第三方库(这里要强调下,第三方库的版本很重要,市面上目前很多的教程文章用的都是老版本的库,所以

很多旧方法都不支持了,本教程是用最新的库为案例写的)

dependencies:
json_annotation: ^2.4.0

dev_dependencies:
fluttertoast: ^2.0.3
json_serializable: ^3.0.0
build_runner: ^1.6.0
首先我们需要创建用来解析或者转换成json的dart实体类

import 'package:json_annotation/json_annotation.dart';
part 'Author.g.dart';
@JsonSerializable()
class Author {
String name;

Author(this.name);

@override
String toString() {
return 'Author{name: $name}';
}
factory Author.fromJson(Map<String, dynamic> json) => _$AuthorFromJson(json);

Map<String,dynamic> toJson() => _$AuthorToJson(this);

}
这里有几点需要注意的

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 'dart:convert';
import 'Author.dart';

void main(http://www.my516.com) async{

//模仿从服务端返回端json数据格式
var obj = {"name":"Jams"};

//创建一个author类,复制名字为xueqi
var b = new Author("xueqi");
//打印字符串
print(b.toString());
//将author转成json字符串,打印出来
String s = json.encode(b);
print(s);
//将obj的json数据转换成Author实体类,然后打印Author的属性name
var c = Author.fromJson(obj);
print("作者的名字是:"+c.name);
}

---------------------

Dart 和 Flutter 使用json_annotation和json_serializable来处理json数据教程的更多相关文章

  1. flutter json_annotation和json_serializable处理json数据序列化

    flutter json_annotation和json_serializable处理json数据序列化 导包 dependencies: json_annotation: ^2.4.0 dev_de ...

  2. Dart DevTools & Flutter

    Dart DevTools & Flutter https://flutter.dev/docs/development/tools/devtools/overview https://dar ...

  3. Flutter -------- 解析JSON数据

    SON序列化方法: 手动序列化和反序列化通过代码生成自动序列化和反序列化 手动JSON序列化是指使使用dart:convert中内置的JSON解码器.它将原始JSON字符串传递给JSON.decode ...

  4. Flutter实战视频-移动电商-22.JSON解析和复杂数据模型转换技巧

    22.JSON解析和复杂数据模型转换技巧 json转Model类 创建model文件夹,在里面新建category.dart类 主要根据这个json来分析我们要做成类的样子 { ", &qu ...

  5. 技术胖Flutter第四季-22页面跳转并返回数据

    视频地址: https://www.bilibili.com/video/av35800108/?p=23 博客地址: https://jspang.com/post/flutter4.html#to ...

  6. 05-06 Flutter JSON和序列化反序列化、创建模型类转换Json数据、轮播图数据渲染:Flutter创建商品数据模型 、请求Api接口渲染热门商品 推荐商品

    Config.dart class Config{ static String domain='http://jd.itying.com/'; } FocusModel.dart class Focu ...

  7. Flutter: 获取本地json数据

    FutureBuilder( future: DefaultAssetBundle.of(context).loadString('data/data.json'), builder: (contex ...

  8. 【技术博客】Flutter—使用网络请求的页面搭建流程、State生命周期、一些组件的应用

    Flutter-使用网络请求的页面搭建流程.State生命周期.一些组件的应用 使用网络请求的页面搭建流程 ​ 在开发APP时,我们常常会遇到如下场景:进入一个页面后,要先进行网络调用,然后使用调用返 ...

  9. [flutter+dart] windows7下开发环境的安装与配置

    前言 博主是做嵌入式的,参加工作时间也不久,而且是非科班出身,之前从未接触过移动开发.最近了解到了flutter框架和dart语言,想作为第二语言学习一下,因此会从最基础的环节开始,以此博客作为记录, ...

随机推荐

  1. 安装maven之后,cmd提示mvn不是内部命令的解决办法

    1.maven的安装教程 下载地址为:http://maven.apache.org/download.cgi 进入此页面之后 点击下载,然后解压,我把目录名改为maven,目录结构如下图所示 下面我 ...

  2. springboot 导出excel

    依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</ ...

  3. HEAD请求

    平时用的最多的无外乎POST GET 很少用的HEAD 这次HEAD请求使用场景:判断资源是否存在

  4. Linux崩溃时启动脚本获取进程相关信息

    编写test.cpp #include <stdlib.h> #include <stdio.h> #include <exception> #include &l ...

  5. spring data jpa 使用方法命名规则查询

    按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写.框架在进行方法名解析时,会先把方法名多余的前缀 ...

  6. angularJS 入门知识

    模块:模块可以定义自己的控制器.服务.工厂类以及指令 模块可以依赖其他模块 模块两大常见错误: 定义模块的时候忘记第二个参数,变成使用模块而不是定义模块 使用模块的时候忘记引用依赖模块

  7. [LeetCode] 627.交换性别

    给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值.交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然). 要求只使用一个更新(Update)语句,并且没 ...

  8. 10个Eclipse珍藏插件推荐

    1.Open Explorer 打开资源管理器插件,这是一个从Eclipse里面可以直接定位打开windows资源管理器文件的插件,这个版本的插件在最新的Eclipse版本中都能使用. 下载地址:ht ...

  9. JAVA编程思想(1) - 一切都是对象

     -"假设我们说还有一种不用的语言,那么我们就会发觉一个有些不同的世界" 1. 用引用操纵对象        每种编程语言都有自己的数据处理方式. 有些时候,程序猿必须时刻留意准备 ...

  10. Java开发中的23种设计模式详解(1)创建型

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...