json - flutter json解析,能够部分解析

标签 json flutter dart

以下是我的 json 输出

{
    "success": true,
    "data": {
        "id": 1,
        "username": "MV",
        "name": "Saraa",
        "userSponsorData": {
            "initial": "GT",
            "name": "Green Trust",
            "email": "trust@mailinator.com",
            "username": "trust",
            "phone": "1234567890"
        }
    }
}
以下是我的模型 Dart 文件的一部分
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“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;
  }
}
但无法从 jsonObject“userSponsorData”中检索 - 当我尝试打印值时,
NoSuchMethodError: The getter 'initial' was called on null. - how to fix this

最佳答案

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");
  }
}
成功结果 ojita

关于json - flutter json解析,能够部分解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63184429/

相关文章:

google-maps - 包裹在 GestureDetector 中的 GoogleMap 不接收拖动事件

flutter - "setState() or markNeedsBuild() called during build"尝试在消费者小部件(提供程序包)内的导航器中推送替换时出错

javascript - 需要将 JSON 解释为变量

flutter - 是否有 Braze 与 push_kit HMS 的最佳实践集成 - Flutter

java - 如何使用 java 中的注释从类路径加载甚至 Autowiring .json 文件?

dart - 返回 Map 的 RawChip

Flutter 导航键 + GlobalKey : "method ' pushedName' was called on null"

ios - 词法或预处理器问题 (Xcode) : 'Flutter/Flutter.h' file not found

Java 设计替代 if-else with instanceof

ios - 无法将类型 '__NSCFConstantString' 的值转换为 'NSArray'