我有一个来自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;
}```
答案 0 :(得分:0)
尝试
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
应该返回列表。