运行以下代码时,我得到的返回值为空。显然我无法正确访问json。
还有另一种访问json数据的方法吗?还是可以这样使用它?
未来类-从URL中解析json
Future<List<User>> _getUsers() async {
var data = await http.get("https://...api.php");
if (data.statusCode == 200) {
print('Status Code 200: Ok!');
var jsonData = json.decode(data.body);
List<User> users = [];
for (var u in jsonData[0]) {
print(u[0]["title"]);
User user = User(u["id"], u["source"], u["desc"], u["link"], u["title"]);
users.add(user);
}
print(users.length);
return users;
} else {
throw Exception('Failed to load json');
}
}
课程
class User {
final int id;
final String source;
final String desc;
final String link;
final String title;
User(this.id, this.source, this.desc, this.link, this.title);
}
基本json结构:
{
"0":{
"id":0,
"source":"XXX",
"link":"XXXX",
"title":"XXXX",
"desc":"XXXX"
},
"1":{
"id":1,
"source":"XXX",
"link":"XXXX",
"title":"XXXX",
"desc":"XXXX"
}
}
这里缺少什么?谢谢。
答案 0 :(得分:1)
您正在尝试使用列表以外的内容。您提供的json结构看起来像是对象的一部分,而不是列表。
列表如下:
[{
"id": 0,
"source": "XXX",
"link": "XXXX",
"title": "XXXX",
"desc": "XXXX"
}]
但是由于底层结构是Map,因此您可以遍历键,进行如下操作:
for (var k in jsonData.keys) {
var u = jsonData[k];
print(u["title"]);
User user = User(u["id"], u["source"], u["desc"], u["link"], u["title"]);
}
答案 1 :(得分:1)
您的json结构不是真正的json。但是,如果您的json是这样的:
&
您可以获取如下数据:
echo "you chose choice $REPLY which is $opt"
firefox http://localhost:8000/browser/ &
break