SBJson Execptions after parsing (__NSArrayM objectForKey:)

I’ve some problems trying to parse Json using SBJson, I did some research and I can’t find something helpfull…

I followed some blog about how to do it, but I still get that error : “__NSArrayM objectForKey:”

  • 6 duplicate symbols for architecture i386
  • NSManagedObject to JSON
  • Display records of next page in json in uitableview on scrolling the tableView when I reach the last record
  • How to plot the markers in google maps from a dictionay in ios?
  • create a json string from NSArray
  • JSON Parse Error
  • So this is the Json I’m trying to parse :

    "result": [
            "authors": [
                "Eric Ries"
            "bc": 9780671607,
            "title": "Yeah",
            "urlImage": "www.yeah.hey",
            "description": "Hey..."

    This is the code I’m using :

    SBJsonParser *json;
    NSDictionary *jsonResults;
    NSError *jsonError;
    json = [ SBJsonParser new ];
    // Get result in a NSDictionary
    jsonResults = (NSDictionary*) [ json objectWithString:output error:&jsonError ];
    // Check if there is an error
    if (jsonResults == nil) {
        NSLog(@"Erreur lors de la lecture du code JSON (%@).", [ jsonError localizedDescription ]);  
    } else {
        NSDictionary *book = (NSDictionary *)[ jsonResults objectForKey:@"result"];
        NSArray *items = (NSArray *) [book objectForKey:@"title"];

    The error :

    -[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x7a2d390
    2012-11-19 20:32:36.336 FMS[500:11f03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x7a2d390'
    *** First throw call stack:
    (0x2245012 0x16a3e7e 0x22d04bd 0x2234bbc 0x223494e 0x8c6a 0x36093 0xb39e83 0x2204376 0x2203e06 0x21eba82 0x21eaf44 0x21eae1b 0x219f7e3 0x219f668 0x8365c 0x2d6d 0x2c95)
    libc++abi.dylib: terminate called throwing an exception
    Current language:  auto; currently objective-c

    And by using valueForKey intead of objectForKey

    [book valueForKey:@"title"];

    I’m getting this :


    Instead of just Yeah

    And I don’t want to parse again the ( “Yeah” ) to at least get Yeah…

    Solutions Collect From Internet About “SBJson Execptions after parsing (__NSArrayM objectForKey:)”

    You get that error because “book” is an array, not a dictionary. If all the results look like this one, that is “book” only has one outer object in it. You can just change the line defining book to :

    NSDictionary *book = [[ jsonResults objectForKey:@"result"] lastObject];