json - 如何在flutter中的模型类中存储复杂的json数据

标签 json flutter api dart model

这是我的代码

我尝试过打印值。 我得到了代币的值(value)。 我可以使用 for every 循环迭代 API 中存在的每个值,但数据不存储在我的模型类中。

    SharedPreferences prefs = await SharedPreferences.getInstance();
    final token = prefs.getString("token") ?? null;
    final userId = prefs.getInt("id") ?? null;
    List<GroupListData> grpDataList = [];
    if (token != null) {
      String url = "${NetworkRequest.baseUrl}/api/group_list";
      var groupRes = await http.post(Uri.parse(url), body: {
        "user_id": '$userId'
      }, headers: {
        //'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': 'Bearer $token',
      });
      //print(groupRes.body);
      if (groupRes.statusCode == 200) {
        final rowJsonData = jsonDecode(groupRes.body);

        GroupListData groupListData;
        List<dynamic> groupLists = rowJsonData['data'];
        groupLists.forEach((d) {
          print(d['id']);

          groupListData = GroupListData(
            id: d['id'],
            groupName: d["groupName"],
            status: d["status"],
            createdAt: d["createdAt"],
            updatedAt: d["updatedAt"],
          );
          grpDataList.add(groupListData);
        });

        for (var d in rowJsonData['data']) {
          print(d);
        }
      } else {
        print('grpResp ${groupRes.statusCode}');
      }
      //print('Token : $token');

    } else {
      print('token is empty');
    }
    print(grpDataList);
    return grpDataList;
  }

这是我的 JSON 数据

{
    "data": [
        {
            "id": 1,
            "group_name": "payroll",
            "status": 1,
            "created_at": "2021-07-20 08:27:31",
            "updated_at": "2021-07-20 10:09:11"
        },
        {
            "id": 2,
            "group_name": "New Recruitment",
            "status": 1,
            "created_at": "2021-07-20 11:21:40",
            "updated_at": "2021-07-20 11:21:40"
        }
    ],
    "message": "Data Found",
    "status": 200
}

这是我的模型类 我认为我的模型类有问题 我无法理解


class GroupListData {
  GroupListData({
     this.id,
     this.groupName,
     this.status,
     this.createdAt,
     this.updatedAt,
  });

  int? id;
  String? groupName;
  int? status;
  DateTime? createdAt;
  DateTime? updatedAt;

  factory GroupListData.fromJson(Map<String, dynamic> json) => GroupListData(
        id: json["id"],
        groupName: json["group_name"],
        status: json["status"],
        createdAt: DateTime.parse(json["created_at"]),
        updatedAt: DateTime.parse(json["updated_at"]),
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "group_name": groupName,
        "status": status,
        "created_at": createdAt!.toIso8601String(),
        "updated_at": updatedAt!.toIso8601String(),
      };
}


这是我的用户界面代码

     FutureBuilder<List<GroupListData>>(
          future: getGroupListData(),
          builder: (BuildContext context,
              AsyncSnapshot<List<GroupListData>> snapshot) {
            if (snapshot.data == null) {
              return Container(
                child: Center(
                  child: Text('Loading...'),
                ),
              );
            }
            return ListView.builder(
                scrollDirection: Axis.vertical,
                shrinkWrap: true,
                itemCount: snapshot.data!.length,
                itemBuilder: (BuildContext context, int index) {
                  return RoundedCard(
                      str: '${snapshot.data![index].groupName}',   ///.groupName always return null value
                      onTap: () {
                        Navigator.push(
                          context,
                          PageTransition(
                              type: PageTransitionType.rightToLeft,
                              child: FeedPage(feedTitle: 'Marketing Team'),
                              inheritTheme: true,
                              ctx: context),
                        );
                        print('Marketing card');
                      });
                });
          },
        ),

提前致谢

最佳答案

您不需要自己将 json 转换为 modal。

  1. 如果 Flutter SDK < 2.0(空安全),请使用此在线 json 转换器 https://javiercbk.github.io/json_to_dart/

  2. 否则请使用此在线 json Converter for Flutter > 2.0 https://app.quicktype.io/

关于json - 如何在flutter中的模型类中存储复杂的json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68650404/

相关文章:

java - 使用 XStream 和 JsonHierarchicalStreamDriver 输出值,如何舍入 double ?

javascript - JSON数据,无法加载控制台错误

firebase - Flutter Firebase 应用内消息

flutter - 在 _WidgetsAppState 中找不到路由 RouteSettings ("SecondScreens", null) 的生成器

node.js - 如何测试使用 JWT 身份验证的 Node API(使用用户登录获取 token )

php - 重写规则以简化 REST api 的 codeigniter url

php - 列出 JSON 数组

c# - 将 js 值作为参数发送给 js 函数

flutter - SocketException :Connection Failed(OS Error: Too many open files, 错误号 = 24)

PHP/REST - 如何实现基于角色的 API 访问?