将json转换为flutter中的列表

时间:2019-07-18 01:56:48

标签: android flutter dart

我有一个来自json的动态数据,然后我想将其更改为一个列表变量,因此可以通过getSuggestions函数将该变量称为。 这是代码:

static List<String> people = new List<String>();

  void getUsers() async {
    try {
      final response =
          await http.get("https://jsonplaceholder.typicode.com/users");
      var resbody = json.decode(response.body);
      var data = json.encode(resbody[0]);
      if (response.statusCode == 200) {
        setState(() {
          people = data;
        });
      } else {
        print("Error getting users.");
      }
    } catch (e) {
      print("Error getting users.");
    }
  }

  static List<String> getSuggestions(String query) {
    List<String> matches = List();
    matches.addAll(people);

    matches.retainWhere((s) => s.toLowerCase().contains(query.toLowerCase()));
    return matches;
  }```

1 个答案:

答案 0 :(得分:0)

更新1:

尝试

resbody.map((entry) => (entry['name'])).toList();

您能否提供更多信息? F.e. json看起来如何?结构等

在大多数情况下,json.decode已经将json数组转换为颤动列表。 可以说您的回复具有以下结构:

{
  "date": "2019-07-18T06:14:36.276Z",
  "body": [
    {
      "amounts": [
        0,
        1,
        2,
      ],
      "name": "string",
    }
  ]
}

然后我建议创建一个数据类:

class Data {
  const Data({this.date, this.body});

  factory Data.fromJson(Map<String, dynamic> parsedJson) {
    return Data(
      date: parsedJson['date'] ,
      body: Body.fromJson(parsedJson['body'],
    );
  }

  final String date;
  final Body body;
}

和一个班级正文

class Body {
  const Body({this.date, this.body});
  factory Body.fromJson(Map<String, dynamic> parsedJson) {
    return Body(
      amounts: parsedJson['amounts'],
      name: parsedJson['name'] ,
    );
  }

  final List<int> amounts;
  final String name;
}

然后data = Data.fromJson(resbody);应该返回Data类。并且data.body.amounts应该返回列表。