Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从flatter/Dart中的JSON数组中提取数据_Json_Parsing_Dart_Flutter - Fatal编程技术网

从flatter/Dart中的JSON数组中提取数据

从flatter/Dart中的JSON数组中提取数据,json,parsing,dart,flutter,Json,Parsing,Dart,Flutter,这是来自请求的响应 var response = [{"id":4731},{"id":4566},{"id":4336},{"id":4333},{"id":4172},{"id":4170},{"id":4168},{"id":4166},{"id":4163},{"id":4161}]; 如何使用flatter提取ID并存储在int列表中。 我已经尝试过这个代码,但不起作用 Future<List<int>> fetchTopIds() async{

这是来自请求的响应

var response = [{"id":4731},{"id":4566},{"id":4336},{"id":4333},{"id":4172},{"id":4170},{"id":4168},{"id":4166},{"id":4163},{"id":4161}];
如何使用flatter提取ID并存储在int列表中。 我已经尝试过这个代码,但不起作用

Future<List<int>> fetchTopIds() async{

     final response = await client.get('$_baseUrl/posts?fields=id');
     final ids = json.decode(response.body); 
     return ids.cast<int>();
}
Future fetchTopIds()异步{
最终响应=wait client.get(“$\u baseUrl/posts?fields=id”);
最终id=json.decode(response.body);
返回id.cast();
}

这应该满足您的要求:

var intIds = ids.map<int>((m) => m['id'] as int).toList();
var intIds=ids.map((m)=>m['id']as int.toList();

当我得到“对象数组”作为响应时,我就是这么做的(我知道我迟到了。但这会帮助下一个人)

List List=json.decode(response.body);
if(response.body.contains(“id”)){
var lst=新列表(List.length);
for(int i=0;i
这里我附上了一个将列表转换为JSON的完整示例,然后从该JSON中检索列表

import 'dart:convert';

void main() {

  List<int> a= [1,2,3]; //List of Integer

  var json= jsonEncode(a); //json Encoded to String
  print(json.runtimeType.toString());

  var dec= jsonDecode(json); //Json Decoded to array of dynamic object

  print(dec.runtimeType.toString());


  a= (dec as List).map((t)=> t as int).toList(); //dynamic array mapped to integer List

  print(a);
}
导入'dart:convert';
void main(){
列表a=[1,2,3];//整数列表
var json=jsonEncode(a);//编码为字符串的json
打印(json.runtimeType.toString());
var dec=jsonDecode(json);//解码为动态对象数组的json
打印(dec.runtimeType.toString());
a=(dec as List).map((t)=>t as int).toList();//映射到整数列表的动态数组
印刷品(a);
}

我找到了一种更好、更简单的方法从JSON数组中获取所需信息/数据

参考以了解更多信息

快速启动的代码:

void main(List<String> arguments) async {
var url = 'ENTER YOUR API ENDPOINT';
var response = await http.get(url);
var jsonResponse = convert.jsonDecode(response.body);
var itemCount = jsonResponse['totalItems'];
print('Number of books about http: $itemCount.');
void主(列表参数)异步{
var url='输入您的API端点';
var response=wait http.get(url);
var jsonResponse=convert.jsonDecode(response.body);
var itemCount=jsonResponse['totalItems'];
print('http:$itemCount.');

这里的“totalItems”将是您所需的键。这仅在您得到响应时起作用。statusCode==200

谢谢,但这会显示未定义方法映射的错误。我想我在您的代码中混淆了一些内容。请检查我更新的答案。但这不会将JSON反序列化为list对象。项计数不是唯一的错误但如果你有一个json对象{“book_name”:“book1”、“author_name”、“author1”}。你可以访问“book_name”的值和“author_name”的值,即“book1”和“author1”分别是。是的,但问题是将JSON对象和具有
id
字段的对象数组转换为相同
id
s的列表,而不是如何访问单个对象属性。本youtube教程可能会帮助您实现所需目标,因此不是论坛,因此提供指向某些youtube教程的链接是没有用的,尤其是在n代码片段提供了一个很好的答案。我不需要完成某些事情,提问者要求完成非常精确的任务,并希望得到问题的答案,但这与OP的任务无关。您可以查看本文以了解更多信息:。
void main(List<String> arguments) async {
var url = 'ENTER YOUR API ENDPOINT';
var response = await http.get(url);
var jsonResponse = convert.jsonDecode(response.body);
var itemCount = jsonResponse['totalItems'];
print('Number of books about http: $itemCount.');