如何使用"response.stream.bytesToString()"而不是"(response.body) ['data']"从JSON获取部分



编辑1:我是新的扑动,和编码在一起,所以请在简单的条件下回答。我可以从这个API得到一个JSON字符串:[https://reqres.in/api/users?page=1][1]。使用jsonDecode(response.body)

我还可以在JSON中使用
jsonDecode(response.body)['data'] // 'data' is a List[]

但是Postman,生成了这个完全不同的代码来从api获取数据。
邮差使用response.stream.bytesToString());

现在我想继续使用邮差的自动生成的代码,但两周,这样我只得到列表,'data',从API。

我的完整代码是:

class ApiService {

Future<List<UserModel>> getData() async {

try{
Response response = await get( Uri.parse('https://reqres.in/api/users?page=2'));
List result = await jsonDecode(response.body)['data'];

if (response.statusCode == 200) {
print(response);
print('');
print(response.body);
print('');
print(result);
print('');
return result.map((e) => UserModel.fromJson(e)).toList();
}
else {
print(response.reasonPhrase);
throw Exception(response.reasonPhrase);
}
} catch(e){
print('Error AA gaya nnn $e') ;
throw e;
}
}
}

------------
Postman generated code is:
==========================
var request = http.Request('GET', Uri.parse('https://reqres.in/api/users?page=2'));

a
http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
[1]: https://reqres.in/api/users?page=1

你的代码是正确的,但你的解析方式是错误的

Future<List<UserModel>> getData() async {
try{
Response response = await get( Uri.parse('https://reqres.in/api/users?page=2'));
if (response.statusCode == 200) {
var jdata =  jsonDecode(response.body);
print(response);
print('');
print(response.body);
print('');
print(jdata);
print('');
return jdata['data'].map((e) => UserModel.fromJson(e)).toList();
}
else {
print(response.reasonPhrase);
throw Exception(response.reasonPhrase);
}
} catch(e){
print('Error AA gaya nnn $e') ;
throw e;
}

}

最新更新