如何使用动态数组解析json';钥匙?
我需要用动态数组键解析json,如下所示: [{key1:{ 标题:。。。。。, img:。。。。。, },键2:{ 标题:。。。。。, img:。。。。。, },}] 我知道如何像这样解析json: [ {标题:…,nbLike:…}, {标题:…,nbLike:…} ] 但是我没有找到任何关于用这样的动态键解析json的信息 我试过了,但没用如何使用动态数组解析json';钥匙?,json,dart,flutter,Json,Dart,Flutter,我需要用动态数组键解析json,如下所示: [{key1:{ 标题:。。。。。, img:。。。。。, },键2:{ 标题:。。。。。, img:。。。。。, },}] 我知道如何像这样解析json: [ {标题:…,nbLike:…}, {标题:…,nbLike:…} ] 但是我没有找到任何关于用这样的动态键解析json的信息 我试过了,但没用 class Event { final String title; final int nbLike; Event({this.title
class Event {
final String title;
final int nbLike;
Event({this.title, this.nbLike});
factory Event.fromJson(Map<String, dynamic> json) {
return Event(
title: json['title'] as String,
nbLike: json['nbLike'] as int,
);
}
}
Future<List<Event>> fetchPosts(http.Client client) async {
final response = '[{"2019-01-15":{"title":"Hey","nbLike":1}, "2019-01-
16":{"title":"Hey2","nbLike":2}}]';
return compute(parsePosts, response);
}
List<Event> parsePosts(String responseBody) {
List<Event> events = new List<Event>();
List jsonParsed = json.decode(responseBody.toString());
for (int i = 0; i < jsonParsed.length; i++) {
print('jsonParsed1 ${jsonParsed.length}');
print('jsonParsed ${jsonParsed[i]}');
events.add(new Event.fromJson(jsonParsed[i]));
}
return events;
}
类事件{
最后的字符串标题;
最终int-nbLike;
事件({this.title,this.nbLike});
工厂事件.fromJson(映射json){
返回事件(
title:json['title']作为字符串,
nbLike:json['nbLike']作为int,
);
}
}
将来的fetchpost(http.Client-Client)异步{
最终回复='[{“2019-01-15”:{“标题”:“嘿”,“nbLike”:1}”,2019-01-
16:{“标题”:“Hey2”,“nbLike”:2}}];
返回计算(解析、响应);
}
列表解析帖子(字符串响应库){
列表事件=新列表();
List jsonParsed=json.decode(responseBody.toString());
for(int i=0;i
我从API接收带有密钥的json,我想将其转换为
[{title:…,nbLike:…},{title:…,nbLike:…}]
要创建“事件”列表并将其显示在卡片列表中,请尝试此操作
List _events = [];
List _dates = [];
jsonParsed.keys.forEach((String key){
_dates.add(key);
});
for(int i=0; i<_dates.length; i++){
jsonParsed[_date[i]].forEach((event){
final Event event = Event(
title: jsonParsed['title'],
nbLike: jsonParsed['nbLike'],
);
_events.add(event);
});
}
列出事件=[];
列出日期=[];
jsonParsed.keys.forEach((字符串键){
_日期。添加(键);
});
对于(int i=0;i如果有人需要它,这是完整的代码,谢谢KURRU HEM
Map<String, dynamic> jsonParsed = {"2019-01-15":{"title":"Hey","nbLike":1}, "2019-01-16":{"title":"Hey2","nbLike":2}};
print(jsonParsed);
List<Event> _events = [];
List _dates = [];
jsonParsed.keys.forEach((String key){
_dates.add(key);
});
print(_dates);
for(int i=0; i<_dates.length; i++){
print(jsonParsed[_dates[i]]['title']);
print(jsonParsed[_dates[i]]['nbLike']);
final Event event = Event(
title: jsonParsed[_dates[i]]['title'],
nbLike: jsonParsed[_dates[i]]['nbLike'],
);
_events.add(event);
}
print('EVENTS --------------> $_events');
class Event {
final String title;
final int nbLike;
Event({this.title, this.nbLike});
factory Event.fromJson(Map<String, dynamic> json) {
return Event(
title: json['title'] as String,
nbLike: json['nbLike'] as int,
);
}
}
Map jsonParsed={“2019-01-15”:{“title”:“嘿”,“nbLike”:1},“2019-01-16”:{“title”:“Hey2”,“nbLike”:2};
打印(jsonParsed);
列表_事件=[];
列出日期=[];
jsonParsed.keys.forEach((字符串键){
_日期。添加(键);
});
打印日期;
对于(int i=0;ii)jsonParsed.keys有此错误:[dart]没有为类“List”定义getter“keys”。[undefined_getter]将paredJson更改为类型MapI更改它,但foreach无法接受键作为字符串,因此我更改为dynamic。代码不显示错误,但Flatter给我此错误:类型“List”不是类型“Map”的子类型,很抱歉,我使用FlatterMap jsonParsed={}新建;试试这个。我使用了类似类型的json格式。我首先将键存储在列表中,然后使用存储在列表中的键提取细节