json - Flutter json解码返回null
问题描述
当我运行以下代码时,我得到一个空返回。显然我没有正确访问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"
}
}
这里缺少什么?谢谢。
解决方案
您正在尝试使用不是列表的东西作为列表。您提供的 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"]);
}
推荐阅读
- python - 如何用pytorch做类似于numpy的trapz函数的数值积分?
- javascript - appendChild 未在 js 文件中读取
- javascript - 使用PHP检查密码是否正确?
- r - 为新创建的数据框中的字段添加名称
- c++ - 从折叠表达式创建一个带分隔符的字符串
- google-cloud-run - 云运行部署失败并出现权限错误
- solr - 阻止 Solr 创建默认复制字段
- javascript - 我正在尝试制作 discord.js 头像命令,但提及部分无法正常工作
- excel - 如何使用 VBA 在 Excel 中提取文本和与之关联的文本字符串?
- c++ - VC2017错误匹配模板类参数