【问题标题】:flutter json parsing, able to parse partiallyflutter json解析,能够部分解析
【发布时间】:2020-07-31 01:16:35
【问题描述】:

以下是我的 json 输出

{
    "success": true,
    "data": {
        "id": 1,
        "username": "MV",
        "name": "Saraa",
        "userSponsorData": {
            "initial": "GT",
            "name": "Green Trust",
            "email": "trust@mailinator.com",
            "username": "trust",
            "phone": "1234567890"
        }
    }
}

以下是我的模型飞镖文件的一部分

class UserDetailModel {
  bool success;
  Data data;

  UserDetailModel({this.success, this.data});

  UserDetailModel.fromJson(Map<String, dynamic> json) {
    success = json['success'];
    data = json['data'] != null ? new Data.fromJson(json['data']) : null;
  }
}

通过解析我能够得到jsonObject“数据”下的值,这些值可以被打印出来

class Data {
  String name;
  String email;
  String uname;
  String phone;
  SponsorData sData;

  Data({this.name, this.email, this.uname, this.phone, this.sData});

  Data.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    email = json['email'];
    uname = json['username'];
    phone = json['phone'];
    sData = json['userSponsorData'] != null
        ? new SponsorData.fromJson(json['userSponsorData'])
        : null;
  }
}

但无法从 jsonObject“userSponsorData”中检索 - 当我尝试打印值时,

NoSuchMethodError: The getter 'initial' was called on null. - how to fix this

【问题讨论】:

    标签: json flutter dart


    【解决方案1】:
    void main() {
        var value = {
          "success": true,
          "data": {
            "id": 1,
            "username": "MV",
            "name": "Saraa",
            "userSponsorData": {
              "initial": "GT",
              "name": "Green Trust",
              "email": "trust@mailinator.com",
              "username": "trust",
              "phone": "1234567890"
            }
          }
        };
        new Data.fromJson(value['data']);
    }
    
    class Data {
      String name;
      String email;
      String uname;
      String phone;
      SponsorData sData;
    
      Data({this.name, this.email, this.uname, this.phone, this.sData});
    
      Data.fromJson(Map<String, dynamic> json) {
        name = json['name'];
        email = json['email'];
        uname = json['username'];
        phone = json['phone'];
        sData = json['userSponsorData'] != null
            ? new SponsorData.fromJson(json['userSponsorData'])
            : null;
      }
    }
    
    class SponsorData {
      String sdata;
      SponsorData({this.sdata});
      SponsorData.fromJson(Map<String, dynamic> json) {
        var initial = json['initial'];
        var name = json['name'];
        var email = json['email'];
        var username = json['username'];
        var phone = json['phone'];
        print("$initial , $name , $email");
      }
    }
    

    成功结果

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 2020-06-26
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多