只为成功找方法,不为失败找理由。

博客园 首页 新随笔 联系 订阅 管理

关于flutter 解析json  

自己看了几天,最近才大概知道是怎么个情况。

首先 要处理的 是后端返回的数据 ,如果是直接请求的话返回的是json 字符串 然后要把字符串转成对象,有几种方式参考

第一种:内置json直接解析
引入import 'dart:convert';即可使用。
var map = {
      "name": "zhangsan",
      "email": "123@qq.com",
      "age": 1
    };

    //转成字符串
    String name = json.encode(map);
    print(name);

    //解析字符串
    Map<String, dynamic> user = json.decode(name);
    print("姓名:${user['name']}");
    print("邮箱:${user['email']}");
    print("年龄:${user['age']}");
  }

这种是可以直接在当前类解析,
第二种:内置json创建model方式解析。
先建立model,
class User {
  String name;
  String email;
  int age;

  User(this.name, this.email, this.age) {}

  User.fromJson(Map<String, dynamic>json)
      :name=json["name"],
        email = json["email"],
        age = json["age"];

  Map<String, dynamic> toJson() {
    return {
      "name": name,
      "email": email,
      "age": age
    };
  }
}
然后可以使用了,
var map = {
      "name": "zhangsan",
      "email": "123@qq.com",
      "age": 1
    };

    var user = User.fromJson(map);
    print("name:${user.name}");

    var userMap = User("lisi", "321@qq.com", 3).toJson();
    for (var key in userMap.keys) {
      print("${key} : ${userMap[key]}");
    }
这种是比较常用的用来解析复杂的json

如果是用dio 则返回的数据就是json 对象。处理和不处理就看自己了 

posted on 2019-04-25 18:19  诗意的活着  阅读(2853)  评论(0编辑  收藏  举报