Conversione di NSString in NSDictionary / JSON

Ho i seguenti dati salvati come NSString :

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

Voglio convertire questi dati in un NSDictionary contenente le coppie di valori chiave.

Sto provando prima a convertire NSString in un object JSON come segue:

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

Tuttavia quando provo:

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

Ricevo il valore NULL .

Qualcuno può suggerire qual è il problema?

Credo che tu stia interpretando erroneamente il formato JSON per i valori chiave. Si dovrebbe memorizzare la stringa come

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

Ora se si segue la dichiarazione NSLog

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

Il risultato sarebbe un altro NSDictionary.

 { Content = 268; type = text; } 

Spero che questo aiuti a ottenere una comprensione chiara.

Penso che ottieni la matrice dalla risposta, quindi devi assegnare la risposta alla matrice.

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

Usa questo codice dove str è la tua stringa 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 } 

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) } } 

Utilizzare il codice seguente per ottenere l’object risposta dal blocco di errori AFHTTPSessionManager ; quindi puoi convertire il tipo generico nel tipo di dati richiesto:

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