【问题标题】:Extract Data from JSON Array in Flutter/Dart在 Flutter/Dart 中从 JSON 数组中提取数据
【发布时间】:2019-03-26 19:56:09
【问题描述】:

这是请求的响应。

var response = [{"id":4731},{"id":4566},{"id":4336},{"id":4333},{"id":4172},{"id":4170},{"id":4168},{"id":4166},{"id":4163},{"id":4161}];

如何使用颤振提取 id 并存储在 int 列表中。 我已经尝试过这段代码,但没有工作。

Future<List<int>> fetchTopIds() async{

     final response = await client.get('$_baseUrl/posts?fields=id');
     final ids = json.decode(response.body); 
     return ids.cast<int>();
}

【问题讨论】:

    标签: json parsing dart flutter


    【解决方案1】:

    这就是我得到“对象数组”作为响应时所做的事情(我知道我迟到了。但它会帮助下一个人)

        List list = json.decode(response.body);
    
      if (response.body.contains("id")) {
        var lst = new List(list.length);
    
        for (int i = 0; i < list.length; i++) {
          var idValue = list[i]['id'];
          print(idValuee);
        }
    

    【讨论】:

      【解决方案2】:

      这应该做你想做的:

      var intIds = ids.map<int>((m) => m['id'] as int).toList();
      

      【讨论】:

      • 谢谢,但这向我显示了未定义方法映射的错误。
      • 我想我在你的代码中混淆了一些东西。请检查我的更新答案。
      【解决方案3】:

      这里我附上了一个将列表转换为 JSON 的完整示例,然后从该 JSON 中取回列表。

      import 'dart:convert';
      
      void main() {
      
        List<int> a= [1,2,3]; //List of Integer
      
        var json= jsonEncode(a); //json Encoded to String
        print(json.runtimeType.toString());
      
        var dec= jsonDecode(json); //Json Decoded to array of dynamic object
      
        print(dec.runtimeType.toString());
      
      
        a= (dec as List).map((t)=> t as int).toList(); //dynamic array mapped to integer List
      
        print(a);
      }
      

      【讨论】:

        【解决方案4】:

        我找到了一种更好、更简单的方法来从 JSON 数组中获取所需的信息/数据。

        参考https://pub.dev/packages/http/example了解更多

        快速入门的代码:

        void main(List<String> arguments) async {
        var url = 'ENTER YOUR API ENDPOINT';
        var response = await http.get(url);
        var jsonResponse = convert.jsonDecode(response.body);
        var itemCount = jsonResponse['totalItems'];
        print('Number of books about http: $itemCount.');
        

        这里 'totalItems' 将是您想要的键。这只有在您获得 response.statusCode == 200 时才有效

        【讨论】:

        • 但这不会将 JSON 反序列化为列表对象。项目的数量并不是唯一与列表有关的事情。
        • 但是如果你有一个 json 对象 {"book_name":"book1", "author_name","author1"}。您可以分别访问“book_name”的值和“author_name”的值,即“book1”和“author1”。
        • 是的,但问题是将带有带有id 字段的对象数组 的JSON 对象转换为相同ids 的列表,而不是如何访问单个对象财产。
        • 这个你管教程可能会帮助你实现你想要的目标youtu.be/LQAUmQFViAY
        • SO 不是论坛,因此提供一些 youtube 教程的链接没有用处,尤其是当代码 sn-ps 有很好的答案时。我不需要实现某些目标,发问者要求非常精确的任务并希望得到问题的答案,但这与 OP 的任务无关。您可以查看这篇文章了解更多信息:How do I write a good answer?。
        猜你喜欢
        • 2019-12-30
        • 1970-01-01
        • 2020-07-06
        • 2021-09-22
        • 1970-01-01
        • 2014-07-05
        • 2021-12-28
        • 2020-01-02
        • 1970-01-01
        相关资源
        最近更新 更多