web-dev-qa-db-fra.com

comment analyser un tableau de chaînes avec SwiftyJSON?

En utilisant SwiftyJSON comment analyser le tableau JSON suivant dans un Swift [String]?

{
    "array": ["one", "two", "three"]
}

J'ai essayé ce code, mais cela ne fonctionne pas pour moi:

for (index: String, obj: JSON) in json["array"] {
        println(obj.stringValue)
    }

Quelle serait la meilleure façon de gérer cela? Merci.

39
The Nomad
{
    "myArray": ["one", "two", "three"]
}

En utilisant SwiftyJSON, vous pouvez obtenir un tableau d'objets JSON avec:

var jsonArr:[JSON] = JSON["myArray"].arrayValue

La programmation fonctionnelle facilite ensuite la conversion en [String] à l'aide de la fonction 'map'. SwiftyJson vous permet de transtyper le type de chaîne avec l'indice ".string"

var stringArr:[String] = JSON["myArray"].arrayValue.map { $0.stringValue}
83
Gwendle

SwiftyJSON vous permet d'extraire un String? En utilisant $ 0.string ou un String non optionnel en utilisant stringValue avec une valeur String vide par défaut si le type ne correspond pas.

Si vous voulez être sûr d'avoir un tableau de chaînes avec des faux non positifs, utilisez:

var stringArray = self.json["array"].array?.flatMap({ $0.string })

ou en Swift 4.1

var stringArray = self.json["array"].array?.compactMap({ $0.string })

Vous pouvez également remplacer self.json["array"].array Par self.json["array"].arrayValue Pour obtenir un résultat [String] Au lieu de [String]?.

7
jfgrang

Vous avez un Dictionary qui contient un Array qui contient Strings. Lorsque vous accédez à une valeur dans Dictionary, elle renvoie un simple Array de Strings. Vous l'itérez comme vous le feriez pour n'importe quel tableau.

for obj in json["array"] {
    println(obj.stringValue)
}
5
Jeffery Thomas

Faites simplement ceci:

for stringInArray in json["array"]{

    let value = stringInArray.1.stringValue
}
4
Yaron Levi