2014-06-25 11 views
5

Ich bin versuchen, eine NSDictionary zu einem JSON-Objekt vom Server abgerufen zu setzen, ich tue, dass in dieser Zeile:NSJSONSerialization gibt „<null>“ string

_peopleArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

Es funktioniert gut und richtig das Wörterbuch erstellt . Ich habe jedoch ein Problem, Werte, die null im JSON-Objekt sind als "<null>" Zeichenfolge Werte im Wörterbuch gespeichert. Gibt es eine Möglichkeit, dies zu beheben oder zu umgehen? Ich möchte vermeiden, dass ich das ganze Ding durchquere und auf @"" setze.

Danke für jede Hilfe!

~ Carpetfizz

Antwort

1

Es gibt nichts, was ich denke, obwohl es leicht von api Trägern korrigiert werden können, falls dies nicht möglich, können Sie immer ein einfaches Makro setzen, verwende ich so etwas zu vermeiden, folgen Makro unten

#define Is_Empty(value) (value == (id)[NSNull null] || value == nil || ([value isKindOfClass:[NSString class]] && ([value isEqualToString:@""] || [value isEqualToString:@"<null>"]))) ? YES : NO 

#define IfNULL(original, replacement) IsNULL(original) ? replacement : original 

#define IsNULL(original) original == (id)[NSNull null] 

#define SafeString(value) IfNULL(value, @"") 

Nutzungs

self.label.text=SafeString([dic objectForKey:@"name"]); 
7

Sie falsch sind. Nullwerte in JSON sind nicht gespeichert als < null> Zeichenfolge Werte. Sie werden als NSNull-Objekte gespeichert, die NSLog als < null> protokolliert.

Sie können niemals darauf vertrauen, welche Daten Ihnen gegeben wurden. Wenn Sie davon ausgehen, dass Sie einen NSString erhalten haben und der Server Ihnen eine Nummer sendet, stürzt Ihr Code wahrscheinlich ab.

NSString* myJSONString = ...; 
if ([myJSONString isKindOfClass:[NSString class]]) { 
    it is a string 
} else { 
    it is not a string 
} 
+0

(das Hinzufügen ein bisschen mehr Info) Nicht nur NSLog sie als String, sondern auch '[NSString string: @ "% @", nullObj];' ausgibt '' in Ihrer Anwendung, die Deshalb werden die meisten Menschen durch das Debuggen dieses Dateityps in die Irre geführt. –

Verwandte Themen