Flutter嵌套JSON解析

时间:2018-08-17 08:15:42

标签: json dart flutter

我在这里有一个嵌套的JSON API:

[
  {
    "Employee": {
      "Name": "Michael Jackson",
      "Identification": "881228145031",
      "Company": "Test Corporate",
      "DateOfBirth": "1988-12-28",
      "Entitlements": {
        "GP": {
          "Entitlement": "10000",
          "Utilisation": "500",
          "Balance": "9500"
        },
        "OPS": {
          "Entitlement": "10000",
          "Utilisation": "500",
          "Balance": "9500"
        },
        "IP": {
          "Entitlement": "50000",
          "Utilisation": "17000",
          "Balance": "33000"
        },
        "Dental": {
          "Entitlement": "0.00",
          "Utilisation": "0.00",
          "Balance": "0.00"
        },
        "Optical": {
          "Entitlement": "500",
          "Utilisation": "0.00",
          "Balance": "500"
        },
        "EHS": {
          "Entitlement": "1000",
          "Utilisation": "250",
          "Balance": "750"
        }
      }
    },
    "Dependents": [
      {
        "Name": "Kim",
        "Relationship": "Parent",
        "Entitlements": {
          "GP": {
            "Entitlement": "10000",
            "Utilisation": "500",
            "Balance": "9500"
          },
          "OPS": {
            "Entitlement": "10000",
            "Utilisation": "500",
            "Balance": "9500"
          },
          "IP": {
            "Entitlement": "50000",
            "Utilisation": "17000",
            "Balance": "33000"
          },
          "Dental": {
            "Entitlement": "800",
            "Utilisation": "200",
            "Balance": "600"
          },
          "Optical": {
            "Entitlement": "500",
            "Utilisation": "0.00",
            "Balance": "500"
          },
          "EHS": {
            "Entitlement": "1000",
            "Utilisation": "250",
            "Balance": "750"
          }
        }
      },
      {
        "Name": "Tim",
        "Relationship": "Spouse",
        "Entitlements": {
          "GP": {
            "Entitlement": "10000",
            "Utilisation": "500",
            "Balance": "9500"
          },
          "OPS": {
            "Entitlement": "10000",
            "Utilisation": "500",
            "Balance": "9500"
          }
        }
      }
    ]
  }
]

如您所见,JSON文件在 Employee Dependents 中都具有相同的嵌套,称为 Entitlements ,并且其中包含一些Maps它的。

雇员受抚养者的基本模型类如下:

crm_single_user_model.dart(员工模型)

class SingleUser{

  final String name, identification, company, dob;

  SingleUser({this.name, this.identification, this.company, this.dob});

  factory SingleUser.fromJson(Map<String, dynamic> ujson){

    return SingleUser(
      name: ujson["Name"].toString(),
      identification: ujson["Identification"].toString(),
      company: ujson["Company"].toString(),
      dob: ujson["DateOfBirth"].toString()
    );
  }
}

crm_dependent_list_model.dart(受抚养人模型)

class DependantModel{

  String name;
  String relationship;

  DependantModel({this.name, this.relationship});

  factory DependantModel.fromJson(Map<String, dynamic> depjson){

    return DependantModel(
      name: depjson["Name"].toString(),
      relationship: depjson["Relationship"].toString()
    );
  }
}

我的问题是 如何为权利创建模型课程?

我似乎想不出解决方案,以创建一个在地图内部包含许多地图的模型类。

在此问题上,您的帮助将非常受帮助。

1 个答案:

答案 0 :(得分:-1)

尝试查看该示例

https://medium.com/flutter-community/parsing-complex-json-in-flutter-747c46655f51

class Product {
  final int id;
  final String name;
  final List<Image> images;

  Product({this.id, this.name, this.images});
}

class Image {
  final int imageId;
  final String imageName;

  Image({this.imageId, this.imageName});
}