我有一个正在解析的词典。我的问题是要显示所有适合我所需的键值对(键是名称)的记录,我只是在桌面上显示最后一个记录。几乎是凌晨4点,我从晚上10点开始就在圈子里走来走去,所以当我忽略某些东西时,任何帮助都将不胜感激。谢谢!
NSArray *jsonDataArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
self.someArray = [[NSMutableArray alloc]init];
for (NSMutableDictionary *dictionary in jsonDataArray)
{
NSMutableArray* Response_array = [dictionary objectForKey:@"loans"];
NSLog(@"Array: %@", Response_array);
NSDictionary *dict = [Response_array objectAtIndex:0];
NSLog(@"dict is %@",dict);
self.someMutableArray = [dict objectForKey:@"name"];
NSLog(@"what is name %@",self.someMutableArray);
}
我尝试了:
NSArray *jsonDataArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
for ( int i = 0 ; i < jsonDataArray.count ; i++ )
{
self.someDictionary = [[jsonDataArray objectAtIndex:i] objectForKey:@"loans"];
self.someMutableArray = [self.someDictionary valueForKey:@"name"];
NSLog(@"MutableArray inside is %@", self.someMutableArray);
}
NSLog(@"MutableArray outside is %@",self.someMutableArray);
在我的最后一次尝试中,我移动了ValueForkey的位置:@"名称":
NSArray *jsonDataArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
self.someMutableArray = [NSMutableArray array];
for ( int i = 0 ; i < jsonDataArray.count ; i++ )
{
self.someMutableArray = [[jsonDataArray objectAtIndex:i] objectForKey:@"loans"];
}
NSLog(@"someMutableArray outside is %@",self.someMutableArray);
然后在我的tableview的CellForrowatIndExpath中,我有:
NSDictionary *dict2 = [self.someMutableArray objectAtIndex:indexPath.row];
NSLog(@"what is dict2 %@", dict2);
cell.textLabel.text = [dict2 valueForKey:@"name"];
这是我的JSON的设置:
[
-{
id: 285,
name: name 1,
-loans: [
-{
id: 42,
name: "Shark"
}
]
},
-{
id: 286,
name: name 2,
-loans: [
-{
id: 50,
name: "Flipper"
}
]
}
]
当您已经拥有数组时,为什么要进行循环?只需用JSON响应分配您的数组
NSArray *jsonDataArray = [[NSArray alloc] initWithArray:[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]];
此数组将是您的数据源,因此从代表和您的rowatindExpath中返回其计数
NSDictionary *dictObject = [jsonDataArray objectAtIndex:indexPath.row];
cell.textLabel.text = [dictObject valueForKey:@"Shark"];
适用于自定义单元格喜欢
NSDictionary *dictObject = [jsonDataArray objectAtIndex:indexPath.row];
cell.textLabel1.text = [dictObject valueForKey:@"Shark"];
cell.textLabel2.text = [dictObject valueForKey:@"Flipper"];
来自我的示例:
我的json文件:
{
status: "Success",
totalcount: "25",
currentcount: "25",
ticketreplies: [
{
ticket_id: "5348CD97",
subject: "bA==",
posteduser: "10025",
postedby: "Admin (Paul)",
message: "PGRpdj4",
post_id: "75",
posted_on: "23 Apr 2014 12:58 IST",
photo: "10025.jpg"
},
{
ticket_id: "5348F754",
subject: "Y2FsbCBv",
posteduser: "10025",
postedby: "Admin (John)",
message: "PGRpdj4",
post_id: "74",
posted_on: "23 Apr 2014 11:46 IST",
photo: "10025.jpg"
}
]
}
我的实现:
self.dic_response=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"Dictionary: %@",self.dic_response);
NSLog(@"Dictionary: %i",[self.dic_response count]);
NSString usrTicketId=[self.dic_response valueForKey:@"totalcount"];
NSLog(@"Ticket_Id: %@",usrTicketId);
NSArray arrTicketRplys=[self.dic_response valueForKey:@"ticketreplies"];
NSLog(@"Ticket_Id: %@",arrTicketRplys);
for(NSArray *tmpArr1 in arrTicketRplys){
if([[tmpArr1 valueForKey:@"posteduser"] isEqualToString:@"10025"]){
NSString *strPostUserName=[tmpArr1 valueForKey:@"postedby"];
NSLog(@"Posted BY: %@", strPostUserName);
}
}
//当然,它将为读取特定对象键和值的逻辑工作。//主要是,这些代码避免静态值,例如 objectAtIndex:4
。
self.dic_response=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
if([self.dic_response valueForKey:@"success"]){
NSMutableArray *resultArray = [NSMutableArray alloc];
for(NSDictionary *tmpArr1 in self.dic_response){
{
[resultArray addObject:tmpArr1];
//this resultArray have whole array value.
}
}
希望这对您有帮助
for ( int i = 0 ; i <jsonDataArray.count ; i++ )
{
self.someDictionary = [[jsonDataArray objectAtIndex:i] objectForKey:@"loans"];
[self.someMutableArray addObject:[self.someDictionary valueForKey:@"name"]]
NSLog(@"MutableArray inside is %@", self.someMutableArray);
}
NSLog(@"MutableArray outside is %@",self.someMutableArray);
----------