2012-12-17 3 views
21

Ich denke, ich bekomme es wie die NSJSONSerialization über alle zu verwenden. Der Anruf, den ich mache ist:Wie NULL-Wert in den JSON über NSJSONSerialization einzuschließen?

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

wo Parameter ist ein NSDictionary die Schlüssel und Werte zu verwenden, in der JSON-Anforderung enthält. Alles ist in Ordnung und alles, bis ich Null als Wert anstelle einer leeren Zeichenfolge verwenden muss. Ich kann keinen Weg finden, um den Wert Null überhaupt zu setzen. Das Beispiel von json, die ich brauche zu erstellen ist:

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

Die Art und Weise Server-Setup ist, dass es entweder einen Fehler als String oder ein null hat erwartet, wenn kein Fehler ist.

Irgendwelche Ideen? Fehle ich einen API-Aufruf oder etwas ähnliches?

Danke!

Antwort

51

Sie müssen verwenden. Zum Beispiel

Swift

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

Objective-C

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

Von der offiziellen Dokumentation von NSDictionary:

Weder ein Schlüssel noch ein Wert kann null sein ; Wenn Sie einen Nullwert in einem Wörterbuch darstellen müssen, sollten Sie NSNull verwenden.

-3

Genau so etwas wie dies versuchen:

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

und dieses Objekt als Parameter verwenden, wenn Sie es wollen.

+0

[NSNull null], nicht NULL. – gnasher729

+0

Sie können keine NIL-Werte in ein NSDictionary einfügen – Climbatize

0

Wenn Sie Swifty JSON verwenden, habe ich gerade a PR erstellt, die mit Nil umgehen sollte. Es ist noch nicht zusammengeführt und könnte einige Verbesserungen benötigen. Die part, die beschreibt, wie dies zu tun ist, sollte ein guter Anfang sein, um Ihre eigene Implementierung zu schreiben, wenn Sie müssen. Die Logik ist nicht so kompliziert, aber es kann knifflige Randfälle/Performance-Dinge geben, über die man nachdenken sollte.

Ich weiß, es ist keine direkte Antwort auf die Frage, da es NSJSONSerialization ersetzt, aber ich hoffe, es kann einige Leute frustriert, wie Swift Nil/Json behandelt!

Verwandte Themen