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