Json 如何在颤振中发出API请求

Json 如何在颤振中发出API请求,json,api,flutter,Json,Api,Flutter,我不熟悉flifter,所以我不确定应该如何进行API调用,来自我使用改型的Java JSON响应: { "total": 13, "rows": [ { "id": 1, "name": "Name" } ] } 模型类: 类别{ 整数合计; 列出行; 类别({this.total,this.rows}); Category.fromJson(映射json){ total=json['to

我不熟悉flifter,所以我不确定应该如何进行API调用,来自我使用改型的Java

JSON响应:

{
    "total": 13,
    "rows": [
        {
            "id": 1,
            "name": "Name"
        }
    ]
}
模型类:

类别{
整数合计;
列出行;
类别({this.total,this.rows});
Category.fromJson(映射json){
total=json['total'];
if(json['rows']!=null){
行=新列表();
json['rows'].forEach((v){
add(newrows.fromJson(v));
});
}
}
}
类行{
字符串名;
行({this.name});
Rows.fromJson(映射json){
name=json['name'];
}
}
主类

List<Rows> rows = [];


  Future<List<Rows>> getData() async {
    var response = await http.get(
        Uri.encodeFull("http://192.168.0.10/api/v1/categories"),
        headers: {
          "Authorization": "API",
          "Accept": "application/json"
        }
    );
    var jsonData = json.decode(response.body);
  }
列出行=[];
Future getData()异步{
var response=wait http.get(
Uri.encodeFull(“http://192.168.0.10/api/v1/categories"),
标题:{
“授权”:“API”,
“接受”:“应用程序/json”
}
);
var jsonData=json.decode(response.body);
}

我不确定如何处理我尝试使用Rows.fromJson()获取对象,但我只获取“Rows的实例”,通过调用name,我获取null。

您可以使用and

这种方法是正确的,但对于list,您应该使用list.map来反序列化列表

试试这个,我没有测试它,我只是根据你的例子写的

var response = await http.get(
    Uri.encodeFull("http://192.168.0.10/api/v1/categories"),
    headers: {
      "Authorization": "API",
      "Accept": "application/json"
    }
);
List<Rows> rows = [];

Map map = json.decode(response.body);
List l = map["rows"];
rows = l.map((map) => Rows.fromJson(map)).toList();
var response=wait http.get(
Uri.encodeFull(“http://192.168.0.10/api/v1/categories"),
标题:{
“授权”:“API”,
“接受”:“应用程序/json”
}
);
列表行=[];
Map=json.decode(response.body);
列表l=映射[“行”];
rows=l.map((map)=>rows.fromJson(map)).toList();

非常感谢,效果非常好。你能给我解释一下这句话吗?rows=l.map((map)=>rows.fromJson(map)).toList();到底是什么=>Rows.fromJson(map)).toList();这是因为
json.decode(..)
将json反序列化为
映射
对象,json中的数组反序列化为
列表
。当您访问
map[“rows”]
时,您会得到一个列表(隐式的映射列表)。因此,您需要将列表中的所有贴图转换为不同类型的对象。这是通过
list.map(..)
函数完成的。使用“map”函数,列表中的每个对象都用于创建一个具有
行的新对象。fromJson(..)