2012-04-04 5 views
0

This answer scheint zu zeigen, wie ein JSONObject erstellt wird.Erstellen eines JSON-Objekts in iOS5

NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]"; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *e = nil; 
NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e]; 
NSLog(@"%@", json); 

Die Ausgabe sieht wie ein JSON-Objekt aus. Aber dann habe ich versucht, die folgenden:

NSLog(@"%@", [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil ]); 

Was ich bekam, war zurück

< 5b0a2020 7b0a2020 20.202.269 6422203a 20.223.122 2c0a2020 2020226e 616d6522 203a2022 41.616.122 0a20207d 2c0a2020 7b0a2020 20.202.269 6422203a 20.223.222 2c0a2020 2020226e 616d6522 203a2022 42.626.222 0a20207d 0a5d>

Dies scheint zu zeigen, dass es keine wirkliche JSONObj ist ect. Wie machst du eins?

Antwort

3

Es kann eine echte JSONObject sein, aber NSLog nicht weiß, wie Rohdaten anzuzeigen ... das "%@" Bit in NSLog eine NSString mit einer Codierung will, nicht NSData.

Es gibt zwei Möglichkeiten, die ich von oben sehen kann, um zu sehen, ob die Dinge in Ordnung waren.

# 1) verwenden, um die [isValidJSONObject:] Methode

oder

# 2) re-analysiert, um das JSON-Objekt Sie gerade erstellt haben und sehen, ob es so, wie Sie es erstellt herauskommt. Sie können wie, indem Sie etwas aus dem NSData drucken:

NSError * error = nil; 
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:&error ]; 
if(jsonData == nil) 
{ 
    NSLog(@"error in parsing json data is %@", [error localizedDescription]); 
} else { 
    NSString * jsonString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];  
    NSLog("json data is %@", jsonString); 
} 
+0

Wenn ich eine NSArray von NSStrings hatte, wie würde ich das gesamte Array auf eine Taste legen und dann drehen, die in eine JSONObject? – neuromancer

+0

Ein JSONObject ist nur ein NSArray? – neuromancer

+0

Sie können JSON-Objekte über 'NSJSONSerialization' entweder aus Daten oder einem Stream (aber nicht aus einem Array oder einem Wörterbuch) erstellen. Sie müssten ein Array in 'NSData' konvertieren, um die JSON-Konvertierung durchzuführen. Werfen Sie einen Blick [auf diese verwandte Frage und Sie könnten die Antwort finden, die Sie suchen] (http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization). –