2012-12-17 7 views
21

Penso di aver capito come usare NSJSONSerialization su tutti. La chiamata che sto facendo è:Come includere il valore nullo in JSON tramite NSJSONSerialization?

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error] 

dove parametri è un NSDictionary che comprende chiavi e valori da utilizzare nella richiesta JSON. Tutto va bene e tutto, finché non devo usare null come valore invece di una stringa vuota. Non riesco a trovare un modo per impostare il valore come null affatto. L'esempio di JSON che ho bisogno di creare è:

{"target" 
    {"firstname":<firstname>, 
    "lastname":<lastname>}, 
"error":null 
} 

Il modo in cui server è messa a punto è che si aspetta sia un errore come una stringa o un nulla se non c'è nessun errore.

Qualche idea? Mi manca una chiamata API o qualcosa del genere?

Grazie!

risposta

51

È necessario utilizzare NSNull. Per esempio

Swift

let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()] 

Objective-C

NSDictionary *dict = @{ @"error": [NSNull null] }; 

Dalla documentazione ufficiale di NSDictionary:

Né una chiave né un valore può essere nullo ; se è necessario rappresentare un valore nullo in un dizionario, è necessario utilizzare NSNull.

-3

solo provare qualcosa di simile:

NSDictionary *jsonObj = [NSDictionary dictionaryWithObjectsAndKeys:@"My Name", @"name", @"Developer", @"occupation", NULL, @"My NULL field", nil]; 

e utilizzare questo oggetto come parametro nel punto desiderato.

+0

[NSNull null], non NULL. – gnasher729

+0

non è possibile inserire valori nulli in un NSDictionary – Climbatize

0

Se si utilizza Swifty JSON, ho appena creato a PR che dovrebbe gestire nil. Non è ancora stato unito e potrebbe aver bisogno di alcuni miglioramenti. Il part che descrive come farlo dovrebbe essere un buon inizio per scrivere la propria implementazione, se necessario. La logica non è così complicata, ma potrebbero esserci problemi di casi limite/prestazioni a cui pensare.

So che non è una risposta diretta alla domanda dato che sta sostituendo NSJSONSerialization, ma spero che possa aiutare alcune persone frustrate da come Swift gestisce nil/json!

Problemi correlati