objective-c xcode json nsstring nsdictionary

objective c - Conversión de NSString a NSDictionary/JSON



objective-c xcode (5)

Creo que está malinterpretando el formato JSON para los valores clave. Debes guardar tu cadena como

NSString *jsonString = @"{/"ID/":{/"Content/":268,/"type/":/"text/"},/"ContractTemplateID/":{/"Content/":65,/"type/":/"text/"}}"; NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

Ahora si lo haces siguiendo la declaración de NSLog

NSLog(@"%@",[json objectForKey:@"ID"]);

El resultado sería otro NSDiccionario.

{ Content = 268; type = text; }

Espero que esto ayude a obtener una comprensión clara.

Tengo los siguientes datos guardados como NSString :

{ Key = ID; Value = { Content = 268; Type = Text; }; }, { Key = ContractTemplateId; Value = { Content = 65; Type = Text; }; },

Quiero convertir estos datos a un NSDictionary contiene los pares clave de valores.

NSString primero convertir el NSString en un objeto JSON de la siguiente manera:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

Sin embargo, cuando intento:

NSString * test = [json objectForKey:@"ID"]; NSLog(@"TEST IS %@", test);

Recibo el valor como NULL .

¿Alguien puede sugerir cuál es el problema?


Creo que obtienes la matriz de respuesta, por lo que debes asignar la respuesta a la matriz.

NSError *err = nil; NSArray *array = [NSJSONSerialization JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err]; NSDictionary *dictionary = [array objectAtIndex:0];
NSString *test = [dictionary objectForKey:@"ID"];
NSLog(@"Test is %@",test);


Swift 3:

if let jsonString = styleDictionary as? String { let objectData = jsonString.data(using: String.Encoding.utf8) do { let json = try JSONSerialization.jsonObject(with: objectData!, options: JSONSerialization.ReadingOptions.mutableContainers) print(String(describing: json)) } catch { // Handle error print(error) } }


Usa este código donde str es tu cadena JSON:

NSError *err = nil; NSArray *arr = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err]; // access the dictionaries NSMutableDictionary *dict = arr[0]; for (NSMutableDictionary *dictionary in arr) { // do something using dictionary }


Use el siguiente código para obtener el objeto de respuesta del bloque de falla AFHTTPSessionManager ; luego puede convertir el tipo genérico en el tipo de datos requerido:

id responseObject = [NSJSONSerialization JSONObjectWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] options:0 error:nil];