iOS Parsen von JSON und AFNetworking
Ich bin das konsumieren eines web service mit Hilfe der AFNetworking tools wie dieses:
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[self GotJSONSuccess:JSON :response ];
} failure: nil ];
[operation start];
Der web service antwortet und gibt mir die folgende json:
[
{
"statusid": 1,
"statusdesc": "ASSIGNED"
},
{
"statusid": 2,
"statusdesc": "COMPLETED"
},
{
"statusid": 3,
"statusdesc": "IN TRANSIT"
},
{
"statusid": 4,
"statusdesc": "DELAYED"
},
{
"statusid": 5,
"statusdesc": "ON HOLD"
}
]
Bin ich mit den folgenden versuchen zum Parsen der json:
- (void)GotJSONSuccess: (NSString*) JSON : (NSHTTPURLResponse*) response
{
NSString *newString = [NSString stringWithFormat:@"%@",JSON];
NSLog(@"response: %@", JSON);
NSData* data = [newString dataUsingEncoding:NSUTF8StringEncoding];
NSError* error;
id jsonObjects = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (error){
NSLog(@"error is %@", [error localizedDescription]);
return;
}
NSArray *keys = [jsonObjects allKeys];
for (NSString *key in keys){
NSLog(@"%@ is %@",key, [jsonObjects objectForKey:key]);
}
}
Jedoch der code fällt in die Fehler-block und die Ausgabe ist
"Der Vorgang konnte nicht abgeschlossen werden. (Kakao Fehler 3840.)"
Was mache ich falsch, analysieren diese einfache json?
Gibt es ein besseres parsing-Ansatz als die, die ich nehme?
Ich möchte zu halten mit den nativen iOS-Klassen und-Methoden für die Analyse, wenn möglich.
- Wenn man sich in FoundationErrors.h (oder suchen Sie einfach Ihr Projekt, einschließlich verknüpfter Rahmen, für 3840, das ist, was ich getan habe), wirst du sehen, dass der Fehler entspricht NSPropertyListReadCorruptError. Was ist kNilOptions?
- Jesse - eine Idee, wie man rund um die NSPropertyListReadCorruptError? Hat dieser Punkt etwas falsch mit dem format der JSON-oben?
- Siddharth - Meine ursprüngliche Frage ist immer noch, dass ich eine Fehlermeldung erhalten, die auf den Aufruf der NSJSONSerialization Linie. Tut alles, was in dem code oben schauen, nicht, dass könnte bewirken, dass Sie nicht zu serialisieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie NSJSONSerialization Klasse, ein array zu erstellen, die als solche
Und dann für jeden Ihrer status-ids würden Sie gerade index in der array und ziehen Sie das Wörterbuch als solche:
Letzten Zeile ziehen würde:`
Dann können Sie Methoden wie Objekt, für Schlüssel auf das Wörterbuch.`
Wenn man sich in FoundationErrors.h (oder suchen Sie einfach Ihr Projekt, einschließlich verknüpfter Rahmen, für 3840, das ist, was ich getan habe), wirst du sehen, dass der Fehler entspricht NSPropertyListReadCorruptError. Googeln um für dies deutet darauf hin, dass Ihre JSON ist möglicherweise ungültig. Vielleicht haben Sie zusätzliche Leerzeichen vor oder nach Ihrer JSON? Kannst du die URL oder die komplette Antwort Sie bekommen vom server?
Ist und was kNilOptions?
Versuchen, diese mit der neuen version(2.) der AFNetworking: