2012-04-06 11 views
17

Estoy escribiendo código para la aplicación de inicio de sesión. ¿Alguien puede ayudarme a analizar una cadena json? mi código es¿cómo puedo analizar una cadena json en 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

No necesita usar SBJsonParser simplemente use las 2 líneas publicadas para resolver su problema de análisis sintáctico. – Kuldeep

+0

Tenga en cuenta que json.org enumera 5 analizadores JSON de código abierto, además de Apple integrado en iOS/OSx. Puedes elegir el que quieras. –

Respuesta

45

datos Ejemplo: Salida de

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

Me parece que si lo intenta va a encontrar que JSONValue es un método indefinido. –

+1

JsonValue no es un método de NSString, se incluye en un paquete llamado SBJson creo ... este código no funcionará fuera de la caja. Es mejor usar NSJSONSerialization según http://stackoverflow.com/questions/10122534/jsonvalue-arc-issue –

+0

Bueno, el PO está utilizando SBJsonParser en su pregunta. –

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"]); 

el resultado de este código es: cadena JSON es: {" json ": {" Success ":" Código de activación ".}}

Después de la conversación, el resultado es el valor ------- diccionario es { Éxito = "código de activación."};

+2

¿Qué es JSONValue? ¿Alguna categoría que hayas creado en 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]); 
Cuestiones relacionadas