Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON Object to NSArray

I have to following JSON response from a server:

   {
  "theSet": [

  ],
  "Identifikation": 1,
  "Name": "Casper",
  "Adress": "Lovis 23",
  "Location": "At home",
  "Information": "The first, the second and the third",
  "Thumbnail": "none",
 }

I am retrieving the data like so:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSLog(@"connectionDidFinishLoading");

    NSLog(@"Succeeded! Received %d bytes of data",[data length]);

    NSError *myError = nil;

     NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];

      news = [NSArray arrayWithObjects:[res allKeys], [res allValues], nil];

      NSLog(@"%@", news);

    //[mainTableView reloadData];
}

Then I want to insert all the JSON data into an array, so I can display the data in my tableview.

My tableview code:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
    }

    cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Name"];
    cell.detailTextLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Adress"];

    return cell;
}

But my app crashes with the error:

-[__NSArrayI objectForKey:]: unrecognized selector sent to instance. 

How can I insert the JSON object into an NSArray, so I can display it in my tableview?

like image 613
7c9d6b001a87e497d6b96fbd4c6fdf Avatar asked Dec 02 '25 09:12

7c9d6b001a87e497d6b96fbd4c6fdf


1 Answers

EDITED:

I reviewed your code again and what I previously answered was wrong.

When generating your news, you are putting 2 NSArray objects in it. The first containing all keys, and the second containing all values in your JSON.

In order to display the names of each object in your JSON, you should be simply doing

news = [res allKeys];
jsonResult = res;

// store your json if you want to use the values!

Note they will be unordered. On your cell, you can do:

NSString *key = [news objectAtIndex:indexPath.row];
cell.textLabel.text = key;

id object = [jsonResult valueForKey:key];
cell.detailTextLabel.text = // do something depending on your json type which can have different values
like image 141
Ismael Avatar answered Dec 03 '25 23:12

Ismael



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!