Convertir un iOS, objective c objet à une chaîne JSON
J'ai un objectif de classe C comme,
@interface message : NSObject {
NSString *from;
NSString *date;
NSString *msg;
}
J'ai un NSMutableArray d'instances de cette classe de message. Je veux sérialiser toutes les instances du NSMutableArray dans un fichier JSON à l'aide du nouveau JSONSerialization Api d'iOS 5 SDK. Comment puis-je faire cela ?
Est la création d'un NSDictionary de chaque touche, en parcourant chaque instance des éléments dans le NSArray ? Quelqu'un peut aider avec le code de comment résoudre ce problème ? Je ne suis pas en mesure d'obtenir de bons résultats dans Google, comme "JSON" biaise les résultats côté serveur, les appels et le transfert de données au lieu de la sérialisation. Merci beaucoup.
EDIT:
NSError *writeError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:notifications options:NSJSONWritingPrettyPrinted error:&writeError];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JSON Output: %@", jsonString);
Vous devez vous connecter pour publier un commentaire.
EDIT: j'ai fait une fausse application qui devrait être un bon exemple pour vous.
J'ai créer une classe de Message à partir de votre extrait de code;
Puis-je configurer un NSArray de deux messages dans le AppDelegate. Le truc, c'est que non seulement le haut niveau de l'objet (les notifications dans votre cas) doivent être sérialisables mais aussi tous les éléments que les notifications contient: c'est pourquoi j'ai créé le dictionnaire méthode dans la classe de Message.
La sortie lorsque je lance l'application est donc:
2012-05-11 11:58:36.018 pile[3146:f803] Sortie JSON: [
{
"msg" : "c",
"à partir de" : "un",
"date" : "b"
},
{
"msg" : "f",
"à partir de" : "d",
"date" : "e"
}
]
RÉPONSE ORIGINALE À CETTE QUESTION:
Est cette la documentation que vous recherchez?
Maintenant, vous pouvez résoudre ce problème facilement à l'aide de JSONModel. JSONModel est une bibliothèque sous le terme générique de sérialiser/désérialiser votre objet en fonction de la Classe. Vous pouvez même utiliser des non-nsobject en fonction de la propriété comme
int
,short
etfloat
. Il peut également répondre imbriquée complexe JSON. Il gère la vérification des erreurs pour vous.Désérialiser exemple. dans le fichier d'en-tête:
dans la mise en œuvre de fichier:
Sérialiser Exemple. Dans la mise en œuvre de fichier:
Remarque: Cela ne fonctionne qu'avec des objets sérialisables. Cette réponse a été fournie ci-dessus dans une édition de la question elle-même, mais je cherche toujours des réponses dans les "réponses" de la section de moi 😉
Ici est une bibliothèque que j'utilise dans mes projets BWJSONMatcher, qui peut vous aider à facilement correspondre à votre chaîne json avec votre modèle de données avec pas plus d'une ligne de code.