删除按下的那一刻,已经的所有,终将消失,云消雾散,了无痕迹。

前言

起初,刚入坑 Flutter,拿到后盾返回 json 串,整个人是比拟懵逼的。

回想起 Android,从开始的 JsonArray、JsonObject,直到最初的 Gson,应用起来几乎爽的嗨起~

而面对 Flutter 的解析 json,真的让我头大,倒不是有多难,而是没找对形式办法。

说一下本文重点:

  • 其实就是拿到接口返回 json 串,复制 quicktype 中,获取生成的 bean 即可。

文末已附上链接,不想看水文的小伙伴可间接拉到底,上手 0 根底。

目标:

  • 集体记录,微薄之力帮忙有须要的小伙伴~

本文 json 对标网上找的一篇不错的 Flutter Json 解决的文章,文末已附上链接。

仅仅是个辅助工具,不蕴含对应的异样解决,毕竟,没学会走,就想跑?啥事儿不得慢慢来吗。

神器退场

尽管 Flutter 提供了 dart:convert 库,让咱们无缝解析 json,然而实际上对于我一样的小白,尤其刚刚入坑的小白,上手水平还是有点费劲。

那么,有没有一个神器,能够让相似我一样 0 根底的开发者,轻而易举解析 json 呢?

闪亮退场:

  • quicktype

官网点击右上角,抉择 open quicktype:

按需抉择对应操作:

测试环节

因为要害解析实体还是通过 quicktype 生成,这里简略的举个例子,让咱们一起来看,解析 json,到底如许 easy~

一、简略的 json 串

要解析的 json 串如下:

{  "id":"201314",  "name":"HLQ_Struggle",  "score" : 100}

对应拷贝 quicktype 获取对应实体类:

// To parse this JSON data, do////     final student = studentFromJson(jsonString);import 'dart:convert';Student studentFromJson(String str) => Student.fromJson(json.decode(str));String studentToJson(Student data) => json.encode(data.toJson());class Student {    Student({        this.id,        this.name,        this.score,    });    String id;    String name;    int score;    factory Student.fromJson(Map<String, dynamic> json) => Student(        id: json["id"],        name: json["name"],        score: json["score"],    );    Map<String, dynamic> toJson() => {        "id": id,        "name": name,        "score": score,    };}

应用贼不便,例如解析以后这个 json:

GestureDetector(  child: _buildItemText('一般 json 解析'),  onTap: () {    showToast(studentFromJson(studentJson).name);  },),

成果如下:

而一般实体转 json 也很 easy(当然这里我偷个懒):

GestureDetector(  child: _buildItemText('一般 Bean 转 json'),  onTap: () {    showToast(studentToJson(studentFromJson(studentJson)));  },),

成果如下:

二、json 蕴含数组

先来看下咱们的 json 串:

{  "city": "张家口",  "streets": [    "尚义",    "张北"  ]}

同样丢到 quicktype 获取最终的实体类:

import 'dart:convert';Address addressFromJson(String str) => Address.fromJson(json.decode(str));String addressToJson(Address data) => json.encode(data.toJson());class Address {  Address({    this.city,    this.streets,  });  String city;  List<String> streets;  factory Address.fromJson(Map<String, dynamic> json) => Address(        city: json["city"],        streets: List<String>.from(json["streets"].map((x) => x)),      );  Map<String, dynamic> toJson() => {        "city": city,        "streets": List<dynamic>.from(streets.map((x) => x)),      };}

成果如下:

内容较为简洁,就不一一展现了~

举荐应用~

Thanks

  • quicktype
  • Parsing complex JSON in Flutter