json parse iOS词典阵列被解析为数组中仅显示tableView中的最后一个对象



我有一个正在解析的词典。我的问题是要显示所有适合我所需的键值对(键是名称)的记录,我只是在桌面上显示最后一个记录。几乎是凌晨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);
----------

最新更新