6 Stimmen

Wie kann man JSON-Objekte auf Objective C-Klassen abbilden?

Ich bin Mapping JSON-formatierte Daten von einem Webserver zu Objective C-Klassen (NSManagedObjects modelliert in Xcode, behandelt von Core Data). Für jedes Attribut der Objective C-Klasse, ich brauche, um:

  1. Ermitteln, ob der Schlüssel des Attributs im JSON-Objekt vorhanden ist,
  2. Feststellen, ob der Wert für diesen Schlüssel nicht null ist, und
  3. Übergabe des Wertes an die modellierte Klasseninstanz, wenn die Bedingungen 1 und 2 erfüllt sind

Im Moment bin ich hard-coding diese Sequenz für jedes der Attribute, so dass jedes Attribut braucht Code wie die folgenden:

// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class

if ([dictObject objectForKey:@"nameFirst"] &&
    [dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
    person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}

Neben dem Erfordernis einer Los des Codes, um die verschiedenen Klassen zu handhaben, scheint dies unausgereift und brüchig zu sein: jede Namensänderung (oder Sprachlokalisierung) würde dazu führen, dass das Mapping fehlschlägt.

Es muss doch einen besseren Weg geben... was übersehe ich?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X