如何在flutter中解析复杂的json

2024-03-22

我无法从复杂的 json 中获取数据,下面是请求中的 json。

{
   "results":{
      "TotalRecordCount":"1",
      "Records":[
         {
            "code":"PCK_34333338365C93E2D50DB9C",
            "address":"1 AV KHEIREDDINE PACHA Imm Pacha centre BLOC B tunis Tunis 1000",
            "contact_phone":"99608258"
         }
      ],
      "Result":"OK"
   }
}

下面是我做的模型。

import 'dart:convert';

class Pickup {
  String status;
  List message;
  //Map<String ,dynamic> results;
  Results results;
  Pickup(
    {this.status,
     this.message,
     this.results,
  });
  factory Pickup.fromJson(Map<String, dynamic> json) {
    return Pickup(
             status: json["status"] as String,
             results: Results.fromJson(json["results"]),

           );
  }
}

class Results {
  String TotalRecordCount;
  records Records;

  Results({this.TotalRecordCount,this.Records});

  factory Results.fromJson(Map<String, dynamic> json) {
    return Results(
    TotalRecordCount: json["TotalRecordCount"],
    Records:records.fromJson(json["Records"]),

    );
  }
}

class records{
  String code;
  String address;
  String contact_phone;

  records({
    this.code,
    this.address,
    this.contact_phone
  });

  factory records.fromJson(Map<String, dynamic> json) {
    return records(
      code: json["code"],
      address: json["address"],
      contact_phone: json["contact_phone"],
    );
  }
}

现在我尝试解析记录以获取代码或地址并打印它。

if (response.statusCode == 200) {
  print(response.body);
  final responseJson = json.decode(response.body);
  var da=Pickup.fromJson(responseJson);
  Results dat=da.results;
  records data=dat.Records;
  print(data.address);
}

response.body 工作正常,但是当我尝试解析结果或记录时,出现“List”不是“Map”类型的子类型错误


我肯定会向您推荐这个网站 json to dart应用程序快速输入 https://app.quicktype.io/只是不要忘记在右侧选择 Dart。

你只需将你的 json 放在 la left 中,就会给你这样的东西:

// To parse this JSON data, do
//
//     final pickUp = pickUpFromJson(jsonString);

import 'dart:convert';

PickUp pickUpFromJson(String str) => PickUp.fromJson(json.decode(str));

String pickUpToJson(PickUp data) => json.encode(data.toJson());

class PickUp {
    Results results;

    PickUp({
        this.results,
    });

    factory PickUp.fromJson(Map<String, dynamic> json) => new PickUp(
        results: Results.fromJson(json["results"]),
    );

    Map<String, dynamic> toJson() => {
        "results": results.toJson(),
    };
}

class Results {
    String totalRecordCount;
    List<Record> records;
    String result;

    Results({
        this.totalRecordCount,
        this.records,
        this.result,
    });

    factory Results.fromJson(Map<String, dynamic> json) => new Results(
        totalRecordCount: json["TotalRecordCount"],
        records: new List<Record>.from(json["Records"].map((x) => Record.fromJson(x))),
        result: json["Result"],
    );

    Map<String, dynamic> toJson() => {
        "TotalRecordCount": totalRecordCount,
        "Records": new List<dynamic>.from(records.map((x) => x.toJson())),
        "Result": result,
    };
}

class Record {
    String code;
    String address;
    String contactPhone;

    Record({
        this.code,
        this.address,
        this.contactPhone,
    });

    factory Record.fromJson(Map<String, dynamic> json) => new Record(
        code: json["code"],
        address: json["address"],
        contactPhone: json["contact_phone"],
    );

    Map<String, dynamic> toJson() => {
        "code": code,
        "address": address,
        "contact_phone": contactPhone,
    };
}

一开始它会告诉您如何使用它。

// To parse this JSON data, do
//
//     final pickUp = pickUpFromJson(jsonString);

所以当你在代码中调用它时,它会是这样的。

  Future<Pickup> getPickup() async {
    var response = await http.get(url);
    return pickUpFromJson(response.body);
  }

例如,可以为 FutureBuilder 调用此代码,或者在您将代码设置为等待未来的任何地方调用此代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在flutter中解析复杂的json 的相关文章

随机推荐

  • MSCRM Web 服务是否支持数据库事务?

    人们会假设任何基于网络的数据应用程序数据库事务都是设计的一个组成部分 环顾 CrmService 我找不到任何表明事务性 CRUD 可用的信息 MSCRM 是否不支持 实现此功能 如果是 而我错过了 有人可以指出我正确的方向吗 我担心在我编
  • HAX 内核模块未安装

    我刚刚从官方 android 网站下载了最新的 android studio 并安装了它 但我收到此错误 而不是使用 Intel X 86 仿真器加速器 什么可能导致此错误 emulator ERROR x86 emulation curr
  • 发现 Control() 不起作用

    我在按钮单击事件中创建了 5 个文本框 当单击动态生成的按钮时 我必须获取文本框中的值 protected void Button1 Click object sender EventArgs e for int i 0 i lt 5 i
  • 如何在Google colab中访问上传的文件

    我是 python 新手 我使用Google Colab 我上传了一个train data npy进入google Colab 然后我想使用它 根据这个链接如何在 Google Colaboratory 中导入并读取 shelve 或 Nu
  • 如何获得后续观察值(国家年)之间的差异?

    假设我有 5 个国家 地区 10 年内的分数 例如 mydata lt 1 3 mydata lt expand grid country c A B C D E year c 1980 1981 1982 1983 1984 1985 1
  • 在服务器路径写入文件时如何传递凭据?

    我想在服务器路径写入一个文件 但是当我尝试这样做时 我们得到了异常 我们没有权限这样做 我们有一个有权在服务器路径写入的应用程序 ID 和密码 但我不知道如何传递此凭据 我当前的代码 Create a new GUID extract th
  • 是否有符合 .NET FIPS 标准的密钥 SHA256 哈希算法?

    我正在使用 HMACSHA256 和以下代码创建一个密钥 SHA256 哈希 HMACSHA256 hmac new HMACSHA256 Encoding UTF8 GetBytes secretKey byte hash hmac Co
  • 如何使用 z-index 进行相对定位?

    我有一个问题z index和我的代码 我想在每一行上都有一个弹出窗口 相对于该行定位 所以我创建了这段代码 level1 position relative z index 2 level2 position relative z inde
  • .htaccess:此处不允许使用 RewriteEngine

    我将 htaccess 上传到服务器并收到错误 500 内部服务器错误 在错误日志中我有以下错误 htaccess 此处不允许 RewriteEngine But mod rewrite so已启用 那么我需要改变吗
  • Android Textview斜体和wrap_contents

    我正在使用 3 个不同颜色的斜体文本视图
  • 将 Jar 文件与 -classpath JAVA 组合

    我有一个关于编译一个 Jar 文件中有一些依赖类的类的问题 MyJar jar 通过将目录树放入 classpath 选项中 例如 javac cp MyJar MyClass java 是检查所有子目录中的类还是仅检查目录树中的顶级类 提
  • 字节的二进制读取仅返回一个值。 C#

    当我期望 0 1 2 3 时 控制台显示 0 0 0 0 这是以下版本的修改版本 https msdn microsoft com en us library system io binarywriter v vs 110 aspx htt
  • 如何将 QTextTable 中的文本居中

    我正在使用 qt 框架开发应用程序 现在我想将表格数据保存为 pdf 我正在使用 QTextTable 和 QTextDocument 类 但是我无法将单元格中的文本居中 我该怎么做呢 感谢帮助 如果您想在插入文本时进行对齐 可以使用 Al
  • 将 JSON 反序列化为匿名对象

    在 C 中 我通过使用这样的代码成功地将匿名对象序列化为 JSON var obj new Amount 108 Message Hello JavaScriptSerializer serializer new JavaScriptSer
  • Asp.Net MVC - 具有两个相同类型列表的强类型视图

    我有一个强类型化到 Item 类的视图 在我的控制器中 我需要发送两个不同的列表 除了创建一个带有两个 List 的新类之外 还有更简单的方法可以做到这一点吗 我最终想要做的是在我的主页上有 10 个按日期排序的项目 以及 10 个按人气排
  • ReactJS 如何添加显示更多/显示更少按钮

    我是 React 新手 我想向我的应用程序添加一个简单的 显示更多 按钮 我有一个包含数据的数组 我想在其中默认显示 3 个条目 当用户点击show more 应呈现其余数据 并且按钮应将文本更改为show less 我不太确定该怎么做 这
  • 如何确定当前用户位置是否在我的 MKCooperativeRegion 内?

    我有一个坐标区域 我已确定该区域包含我想要为我的应用程序显示的内容的限制 我已将其设置为具有中心点纬度 经度和跨度的 MKCooperativeRegion 如何确定当前 userLocation 是否在我的坐标区域内 使用地图矩形 这是使
  • 检查数组是否包含重复值[重复]

    这个问题在这里已经有答案了 我想编写一个 JavaScript 函数来检查数组是否包含重复值 我编写了以下代码 但其给出的答案始终为 true 谁能告诉我我错过了什么 function checkIfArrayIsUnique myArra
  • 如何在 Docker 容器(Python、Flask 和 Redis)中启动自定义 RQ Worker

    我遵循 Miguel Grinberg 的优秀 Flask Mega 教程 成功设置了一个包含 Redis 任务队列和 RQ 工作线程的 Flask Web 应用程序 所有这些都在 Docker 容器中 为了提高任务队列性能 我现在需要使用
  • 如何在flutter中解析复杂的json

    我无法从复杂的 json 中获取数据 下面是请求中的 json results TotalRecordCount 1 Records code PCK 34333338365C93E2D50DB9C address 1 AV KHEIRED