浅谈Flutter解析JSON三种方式

作者:静默的小猫 时间:2022-04-08 10:46:45 

Dart实体类格式


class CategoryMo {
String name;
int count;

CategoryMo({this.name, this.count});
//将map转成mo
CategoryMo.fromJson(Map<String, dynamic> json) {
name = json['name'];
count = json['count'];
}
//将mo转成map,可缺省
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['count'] = this.count;
return data;
}
}

方案一:手写实体类

person.json


{
"name": "Jack",
"age": 20
}

model转换与使用


var personMap = {
"name": "Jack",
"age": 20
};
Person person = Person.fromJson(personMap);
print('name:${person.name}');
print('age:${person.age}');

方案二:生产力工具:json-to-dart插件自动生成实体类

方案三:生产力工具: json_ serializable使用技巧

安装插件


dependencies:
...
dio: ^3.0.10
json_annotation: ^3.1.0

dev_dependencies:
...
json_serializable: ^3.5.0
build_runner: ^1.0.0

配置实体类


{
"code": 0,
"method": "GET",
"requestPrams": "dd"
}

import 'package:json_annotation/json_annotation.dart';

// result.g.dart 将在我们运行生成命令后自动生成
part 'result.g.dart';

///这个标注是告诉生成器,这个类是需要生成Model类的
@JsonSerializable()
class Result {
//定义构造方法
Result(this.code, this.method, this.requestPrams);
//定义字段
int code;
String method;
String requestPrams;

//固定格式,不同的类使用不同的mixin即可
factory Result.fromJson(Map<String, dynamic> json) => _$ResultFromJson(json);
//固定格式
Map<String, dynamic> toJson() => _$ResultToJson(this);
}

因为实体类的生成代码还不存在,所以上代码会提示一-些错误是正常现象

执行build生成实体类


flutter packages pub run build_runner build

如何选择

浅谈Flutter解析JSON三种方式

来源:https://juejin.cn/post/6944876239425536036

标签:Flutter,解析,JSON
0
投稿

猜你喜欢

  • WPF实现调用本机摄像头的示例代码

    2023-03-15 15:40:24
  • SpringMVC如何接收参数各种场景

    2022-01-23 22:56:24
  • Java的Socket网络编程基础知识入门教程

    2021-11-19 10:10:37
  • Android打开GPS导航并获取位置信息返回null解决方案

    2021-08-31 09:21:19
  • JavaEE中struts2实现文件上传下载功能实例解析

    2023-03-09 07:54:31
  • Android重要控件SnackBar使用方法详解

    2022-11-10 04:49:41
  • Java实战之医院管理系统的实现

    2022-04-13 17:39:27
  • Android中获得正在运行的程序和系统服务的方法

    2023-01-19 21:05:42
  • Unity3d实现跑马灯广播效果

    2022-11-13 20:08:12
  • Spring Security+JWT简述(附源码)

    2022-10-16 11:57:51
  • SpringCloud Gateway 路由配置定位原理分析

    2022-06-10 19:57:47
  • 三分钟快速掌握Java中枚举(enum)

    2023-11-27 09:46:30
  • Lombok中@EqualsAndHashCode注解的使用及说明

    2023-11-30 04:47:05
  • Java中的Random()函数及两种构造方法

    2023-05-12 03:00:46
  • C#使用随机数编写班级点名器的示例代码

    2022-05-26 11:04:51
  • C#中XmlTextWriter读写xml文件详细介绍

    2022-01-26 05:13:48
  • Spring boot的上传图片功能实例详解

    2022-10-09 09:52:00
  • 详解JAVA中的Collection接口和其主要实现的类

    2021-06-20 19:14:08
  • 当Mybatis遇上目录树超全完美解决方案

    2021-09-28 16:21:13
  • MyBatis插入数据返回主键的介绍

    2023-10-26 03:15:21
  • asp之家 软件编程 m.aspxhome.com