JSON l'Analyse en Swift 3
Quelqu'un a été en mesure de trouver un moyen pour analyser des fichiers JSON dans Swift 3? J'ai été en mesure d'obtenir les données de retour mais je suis d'échec quand il s'agit de rompre les données dans des domaines spécifiques. Je poste un exemple de code, mais je suis passé par beaucoup de différentes méthodes, sans succès, et que vous n'avez pas enregistrées. Le format de base je veux analyser est quelque chose comme cela. Merci à l'avance.
{
"Language": {
"Field":[
{
"Number":"976",
"Name":"Test"
},
{
"Number":"977",
"Name":"Test"
}
]
}
}
- Votre exemple n'est pas valide JSON. Il doit commencer et finir par une autre
{…}
. - J'ai corrigé ça. Cependant, il a juste collé ici de mal. Mon fichier a la mise en forme correcte. Merci
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé
JSONSerialization.jsonObject(with:options:)
?Swift produit parfois quelques très étrange syntaxe.
Tout dans l'objet JSON hiérarchie finit par obtenir enveloppé comme une option (ie.
AnyObject?
).Array<T>
indice renvoie à un non-facultatifT
. Pour ce JSON, qui est enveloppé dans une option, indice de tableau renvoieOptional<AnyObject>
. Cependant,Dictionary<K, V>
indice renvoie unOptional<V>
. Pour ce JSON, indice renvoie à la très étrange à la rechercheOptional<Optional<AnyObject>>
(ie.AnyObject??
).json
est unOptional<AnyObject>
.json?["Language"]
retourne unOptional<Optional<AnyObject>>
.json?["Language"]??["Field"]
retourne unOptional<Optional<AnyObject>>
.json?["Language"]??["Field"]??[0]
retourne unOptional<AnyObject>
.json?["Language"]??["Field"]??[0]?["Number"]
retourne unOptional<Optional<AnyObject>>
.json?["Language"]??["Field"]??[0]?["Number"] as? String
retourne unOptional<String>
.La
Optional<String>
est ensuite utilisé par leif let
syntaxe à un produitString
.Note finale: parcourir le tableau champ ressemble à ceci.
Swift 4 Mise À Jour
Swift 4 en fait tout cela beaucoup plus facile à traiter. De nouveau, nous allons commencer avec vos données de test (
"""
est-ce qui est beaucoup plus agréable).Ensuite, nous pouvons définir des classes autour des objets utilisés dans votre JSON.
La
CodingKeys
enum est comment struct propriétés sont mappées pour objet JSON membre des chaînes de caractères. Cette cartographie est réalisée automatiquement parDecodable
.De parser le JSON est maintenant simple.
error: use of unresolved identifier 'JSONSerialization'
sur Swift version 3.0 (swift-3.0-EXTRAIT-2).Dans Xcode 8 et Swift 3
id
maintenant des importations de l'Any
plutôt queAnyObject
Cela signifie que
JSONSerialization.jsonObject(with: data)
retourneAny
. Donc, vous avez à jeter le jsondata
à un type spécifique comme[String:Any]
. Même chose s'applique à la prochaine champs en bas de la json.Dans la pratique, vous souhaiterez probablement certains de terrain enterré dans le json. Supposons que c'est le
Name
champ du premier élément deField
tableau. Vous pouvez utiliser une chaîne de déballe ce genre pour accéder en toute sécurité le terrain:Aussi, vous voudrez peut-être vérifier d'Apple Swift Blog Travailler avec JSON en Swift
Bousculer JSON dans une chaîne manuellement est un pain pita. Pourquoi ne pas vous venez de mettre le JSON dans un fichier et de lire que dans?
Swift 3:
Utilisation swiftjson bibliothèque
Je pense que sa méthode très simple pour analyser
....
comme ça .
JSON l'Analyse en swift 4 à l'aide de Décodable Protocole :
- Je créer un mocky fichier à l'aide de votre objet json :
http://www.mocky.io/v2/5a280c282f0000f92c0635e6
Voici le code pour parser le JSON :
De Création De Modèle :
Vous pouvez utiliser en option dans le modèle, si vous n'êtes pas certain que quelque chose est peut-être manquant dans le fichier JSON.
C'est la Logique d'analyse :
La Sortie D'Impression :
Cette le Projet github lien. Vous pouvez vérifier.
JSON l'Analyse en utilisant Swift 4 de FAÇON Simple