2012-04-06 16 views
17

sto scrivendo il codice per l'applicazione di accesso. qualcuno può aiutarmi come analizzare una stringa json? il mio codice ècome posso analizzare una stringa json in nsdictionary?

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

    NSString *loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 

    SBJsonParser *parser = [[SBJsonParser alloc] init]; 

    NSArray *loginDict = [parser objectWithString:loginDict error:nil]; 

    [loginStatus release]; 

    [connection release]; 
+0

Non è necessario utilizzare SBJsonParser, basta usare le 2 linee pubblicate per risolvere il problema di analisi. – Kuldeep

+0

Nota che json.org elenca 5 parser JSON open source, oltre a quello Apple integrato in iOS/OSx. Puoi scegliere quello che vuoi. –

risposta

45

dati Esempio: uscita

NSString *strData = @"{\"1\": {\"name\": \"Jerry\",\"age\": \"12\"}, \"2\": {\"name\": \"Bob\",\"age\": \"16\"}}"; 
NSData *webData = [strData dataUsingEncoding:NSUTF8StringEncoding]; 

NSError *error; 
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:webData options:0 error:&error]; 
NSLog(@"JSON DIct: %@", jsonDict); 

NSLog:

JSON DIct: { 
    1 =  { 
     age = 12; 
     name = Jerry; 
    }; 
    2 =  { 
     age = 16; 
     name = Bob; 
    }; 
} 
0
NSString *loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding] 
NSLog([[loginStatus JSONValue] description],nil); 

//This will give you parsed output. 
+1

Mi sembra che se ci provasse scoprirà che JSONValue è un metodo indefinito. –

+1

JSONValue non è un metodo di NSString, è incluso in un pacchetto chiamato SBJson, penso ... questo codice non funzionerà immediatamente. È meglio utilizzare NSJSONSerialization come per http://stackoverflow.com/questions/10122534/jsonvalue-arc-issue –

+0

Bene, l'OP utilizza SBJsonParser nella sua domanda. –

0
NSString *responseString = [[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding]; 
    NSlog(@"json String is: %@",responseString); 
    NSDictionary *dictionary = [responseString JSONValue]; 
    NSLog(@"Dictionary value is %@", [dictionary objectForKey:@"json"]); 

il risultato di questo codice è: JSON String è: {" json ": {" Success ":" Codice di attivazione. "}}

Dopo la conversazione il risultato è ------- Il valore del dizionario è { Success = "Codice di attivazione."};

+2

Che cos'è JSONValue? alcune categorie che hai creato su NSString? –

0
//*************Static Resopnse 
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"text"]; 
NSLog (@"Content: %@", filePath); 
NSString *content = [[[NSString alloc] initWithContentsOfFile:filePath 
               usedEncoding:nil 
                 error:nil] autorelease]; 

SBJSON *json = [[SBJSON new] autorelease]; 
NSString *str=[[NSString alloc]initWithString:content]; 
dictTemp = [json objectWithString:str error:nil]; 
NSLog(@"Actions is: %@",dictTemp); 
NSArray *arr=[[dictTemp valueForKey:@"Data"] mutableCopy]; 
arrX=[[NSMutableArray alloc] init]; 
arrY=[[NSMutableArray alloc] init]; 

for(NSDictionary *dict in arr) 
{ 
    [arrX addObject:[dict valueForKey:@"Milestone"]]; 
    [arrY addObject:[dict valueForKey:@"Sites"]]; 
} 
NSLog(@"X is: %@",[arrX description]); 
NSLog(@"Y is: %@",[arrY description]); 
Problemi correlati