【问题标题】:How to extract key and value from JSON Object in flutter如何在颤动中从 JSON 对象中提取键和值
【发布时间】:2021-09-24 02:41:36
【问题描述】:

我集成了 API,我想从 API 响应中获取键和值。我将键和值都存储在两个单独的数组中,并显示在 listview 中。so 如何从 api 响应中获取键和值。

[
    { "Name": "abc"
        "Department": "Marketing",
        "EmpCode": "ABC123",
        "Salary":"20000",
        "Pincode": 100023
}]

我使用此代码得到响应:

List list = json.decode(response.body);

那么如何将Name,department,empcode和abc,marketing分开。

【问题讨论】:

  • 这个 json 似乎无效。你总是得到一个包含 1 个对象的列表吗?然后你可以做list[0]['Name'] 或迭代列表,如果它包含更多元素。
  • 我只有一个响应对象,并且密钥总是从后端更改。所以我想要密钥来自响应
  • Rohits 的答案似乎就是你所追求的,如果你不知道密钥,但想迭代它们。

标签: flutter dart flutter-dependencies


【解决方案1】:

只需使用 forEach 循环,它就会为您提取键和值,您可以根据需要存储它们,您不必担心您有多少键

response.forEach((key, value){
    print('key is $key');
    print('value is $value ');
  }

【讨论】:

  • json.decode(response.body) .forEach((key, value){ print('key is $key'); print('value is $value '); }); : type '(dynamic, dynamic) => Null' 不是 'f' 的类型 '(dynamic) => dynamic' 的子类型
  • 我认为你正面临这个错误,因为你的响应是一个对象列表,你可以为对象上的每个循环运行,所以首先运行一个 for 循环来访问这些对象,然后在对象,如果列表中只有一个对象,则直接设置 index = 0 并使用 for Each Loop
  • 你也可以查看这篇文章更好地理解JSON序列化medium.com/flutter-community/…
【解决方案2】:

创建一个类来保存你的字段并添加一个 fromJson 方法,如下所示:

 class ClassName{
          ClassName(
              {this.Name,
              this.Department,
              this.EmpCode,
              this.Salary,
              this.Pincode,
             });
        
          String Name;
          String Department;
          String EmpCode;
          double Salary;
          String Pincode;
               
        ClassName.fromJson(Map<String, dynamic> json) {
              Name= json['Name'];
              Department= json['Department'];
              EmpCode= json['EmpCode'];
              Salary= json['Salary'];
              Pincode= json['Pincode'];
        }
    }

然后您可以使用从 API 获得的 json 执行类似的操作:

var x = json.decode(response.body.toString());

var className = ClassName.fromJson(x);

【讨论】:

  • 我不知道会有多少键响应
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 2016-12-24
  • 2020-10-11
  • 2018-05-05
  • 2019-04-03
相关资源
最近更新 更多