Qualcuno ha idea di come serializzare JSON nidificato basato sulla classe NSObject? C'è una discussione per serializzare semplice JSON here, ma non è abbastanza generico per soddisfare JSON nidificati complessi.iOS: serializza/deserializza JSON complesso genericamente dalla classe NSObject
immaginare questo è il risultato di JSON:
{ "accounting" : [{ "firstName" : "John",
"lastName" : "Doe",
"age" : 23 },
{ "firstName" : "Mary",
"lastName" : "Smith",
"age" : 32 }
],
"sales" : [{ "firstName" : "Sally",
"lastName" : "Green",
"age" : 27 },
{ "firstName" : "Jim",
"lastName" : "Galley",
"age" : 41 }
]}
Da questa classe:
@interface Person : NSObject{}
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@property (nonatomic, strong) NSNumber *age;
@end
@interface Department : NSObject{}
@property (nonatomic, strong) NSMutableArray *accounting; //contain Person class
@property (nonatomic, strong) NSMutableArray *sales; //contain Person class
@end
Come serializzare/deserializzare loro in base alla classe generica?
EDIT
Attualmente sono in grado di generare carico utile come questo sulla base di qualsiasi classe:
NSMutableDictionary *Payload = [self serialize:objClass];
Ma non è adatto nidificato JSON complesso. Qualcuno ha una soluzione migliore per questo? This library per C# gestisce serialize/deserialze in base alla classe dell'oggetto. Voglio riprodurre qualcosa dello stesso basato su NSObject
Un modo per farlo non è: basta andare avanti e gestire gli oggetti NSDictionary invece delle classi personalizzate. Questo spesso funziona meglio di quanto si pensi. –
È sempre possibile aggiungere un metodo alla classe 'initWithJSONObject: error:' (tramite una categoria, ad esempio). – CouchDeveloper
@CouchDeveloper - 'initWithDictionary' è probabilmente più generale. (Puoi includere l'errore ': parm se è meritato.) –