I'm mapping JSON-formatted data from a web server to Objective C classes (NSManagedObjects modeled in Xcode, handled by Core Data). For each attribute of the Objective C class, I need to:
- Determine if the attribute's key exists in the JSON object,
- Determine if the value for that key is not null, and
- Pass the value to the modeled class instance if conditions 1 and 2 are true
Right now, I'm hard-coding this sequence for each of the attributes, so every attribute needs code like the following:
// 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"];
}
Besides requiring a lot of code to handle the various classes, this seems kludgy and brittle: any name change (or language localization) would cause the mapping to fail.
There has to be a better way... what am I missing?