Swift: Convertir struct JSON?
J'ai créé un struct
et souhaitez l'enregistrer en tant que format JSON fichier.
struct Sentence {
var sentence = ""
var lang = ""
}
var s = Sentence()
s.sentence = "Hello world"
s.lang = "en"
print(s)
...qui se traduit par:
Sentence(sentence: "Hello world", lang: "en")
Mais comment puis-je convertir des struct
objet à quelque chose comme:
{
"sentence": "Hello world",
"lang": "en"
}
Double Possible de Convertir Dictionnaire JSON dans Swift (un indice, vous ne pouvez convertir un tableau ou un dictionnaire JSON, donc, fondamentalement, vous avez besoin d'un dictionnaire de la représentation de la valeur que vous voulez mettre dans un format JSON).
Essentiellement, ce serait génial si je pouvais convertir la structure d'un json comme Chaîne de caractères. Lorsque uniquement les tableaux et les dictionnaires sont convertible en JSON, ma question est: Comment faire pour convertir un struct dans un dictionnaire?
Il y a 3rd party bibliothèques telles que github.com/Hearst-DD/ObjectMapper. Je n'ai aucune expérience avec cela, cependant.
Essentiellement, ce serait génial si je pouvais convertir la structure d'un json comme Chaîne de caractères. Lorsque uniquement les tableaux et les dictionnaires sont convertible en JSON, ma question est: Comment faire pour convertir un struct dans un dictionnaire?
Il y a 3rd party bibliothèques telles que github.com/Hearst-DD/ObjectMapper. Je n'ai aucune expérience avec cela, cependant.
OriginalL'auteur ixany | 2015-10-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter une propriété calculée pour obtenir la représentation JSON et statique (classe de) fonction pour créer un tableau JSON à partir d'unSentence
tableau.Edit:
Swift 4 introduit l'
Codable
protocole qui fournit un moyen très pratique pour coder et décoder personnalisé des structures.Ajouter un initialiseur init(dict: [Chaîne:Tout]) {...et en extraire les valeurs
OriginalL'auteur vadian
Utiliser le NSJSONSerialization classe.
L'utilisation de ce pour référence, vous pouvez avoir besoin de créer une fonction qui retourne du JSON chaîne sérialisée. Dans cette fonction, vous pouvez prendre les propriétés requises et créer un NSDictionary d'eux et d'utiliser la classe mentionnée ci-dessus.
Quelque chose comme ceci:
Parce que votre structure ne dispose que de deux propriétés, il peut être plus facile de construire la chaîne JSON vous-même.
Le retour de
toJSON()
devrait êtreNSData
. Aussi, la seconde touche de laprops
dictionnaire que vous avez créé est faux.J'ai mis à jour la deuxième clé pour être une chaîne, merci. Le deuxième point dépend de ce que l'utilisateur veut revenir
OriginalL'auteur Scriptable
Swift 4 prend en charge la Encodable protocole par exemple
Maintenant, vous pouvez convertir automatiquement vos Struct en JSON à l'aide d'un JSONEncoder:
Imprimer:
https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types
OriginalL'auteur Brett