как разобрать строку в iphone, цель c? - PullRequest
0 голосов
/ 25 августа 2011

У меня есть строка в этом формате: - {panel: {start: [{"element_id": 0, "element_name": 0, "element_image": 0, "element_desc": 0, "element_dob": 0, "awards": 0},]} как мне разобрать эту строку.пожалуйста, помогите мне преодолеть эту проблему.Я пробовал SBJSon - код: -

NSLog(@"response string before = %@", responseStr);
NSData *fileData = [NSData dataWithContentsOfFile:responseStr];
NSString *responseString = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
NSLog(@"response string after = %@", responseString);
NSError *jsonError = nil;
NSDictionary *feed = nil;
    SBJsonParser *json = [[SBJsonParser new] autorelease];
feed = [json objectWithString:responseString error:&jsonError];
NSLog(@"feed = %@", feed);
if ([jsonError code]==0) {
    // get the array of "results" from the feed and cast to NSArray
    NSMutableArray *localObjects = [[[NSMutableArray alloc] init] autorelease];
    NSArray *results= (NSArray *)[feed valueForKey:@"start"];

    // loop over all the results objects and print their names
    int ndx;

    for (ndx = 0; ndx < results.count; ndx++) 
    {
        [localObjects addObject:(NSDictionary *)[results objectAtIndex:ndx]];
    }
    NSLog(@"local objects = %@", localObjects);
}

фид NSDictionary получает нулевое значение в NSLog ..

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Вы можете использовать регулярные выражения ( wiki ).Возьмите источники из: RegexKit , добавьте к флагам компоновщика "-fopenmp" и используйте в сообщении NSString "stringByMatching".

Например, если вы хотите взять "element_name":

NSString* str = [your_string stringByMatching:@"element_name\".*:(.*?)," capture: 1L];
0 голосов
/ 25 августа 2011

Попробуйте следующее ...

    SBJSON *json = [[SBJSON new] autorelease];  
    NSDictionary *dictResponse = (NSDictionary*) [json objectWithString:sitesResponse error:nil];
...