2011-04-23 3 views
2

J'essaie de créer une bibliothèque JSON qui convertit la chaîne JSON en objets. Quel est le moyen le plus propre de marquer les propriétés liées à la chaîne JSON? Est-il possible d'obtenir quelque chose comme le code ci-dessousObjectif C - Liaison de données?

REMARQUE: Le code ci-dessous ne fonctionne pas, il est juste un échantillon de montrer ce que je suis en train de réaliser

JSON Chaîne

{ 
    "FIRST_NAME": "Some first name", 
    "LAST_NAME": "Some last name" 
    "CLASSES" : 
    [ 
     { 
     "CLASS_NAME": "class 1" 
     } 
     { 
     "CLASS_NAME": "class 2" 
     } 
    ] 
} 

Modèle

@interFace Student 

[JSON = "FIRST_NAME"] 
@property (nonatomic, retain) NSString *firstName; 

[JSON = "LAST_NAME"] 
@property (nonatomic, retain) NSString *lastName; 

[JSON = "CLASSES"] 
@property (nonatomic, retain) NSArray *classes; 

@end 

JSON Méthode

@implementation JSON 
+ (id)getObjectFromJSONString:(NSString*)string withType:(Class)class 
{ 
    //Create a student Object 
    //for each property if there is a JSON mark look for the value in json string 
    //populate all available values 
    //return object 
} 
@end 

Répondre

2

C'est certainement possible. Cependant, notez qu'Objective-C ne prend pas en charge les annotations de code source arbitraires qui peuvent être inspectées lors de l'exécution. Le mappage entre une clé JSON et une clé d'objet représentant une variable d'instance ou une propriété déclarée ne sera pas exactement comme décrit. .

Je vous recommande de jeter un oeil à RestKit. En plus de faciliter la connexion de votre programme aux services RESTful, il dispose d'une infrastructure de mappage d'objets qui transforme les messages JSON distants en objets de domaine locaux de manière déclarative.

0

Je suppose que vous utilisez JSON-cadre pour analyser JSON.

Pas aussi loin que je sache. Nous avons écrit quelques clients de données qui consomment des données JSON. En fonction de qui gère le service REST, vous devez également vérifier les éléments tels que les valeurs NULL. De même, vous devrez peut-être convertir des valeurs en nombres entiers/flottants.

+0

oui Je prévois d'utiliser un cadre de JSON pour analyser la chaîne JSON NSDictionary – aryaxt