web-dev-qa-db-ja.com

SwiftyJSONで文字列配列を解析する方法は?

SwiftyJSONを使用して、次のJSON配列をどのように解析してSwift [String]

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

このコードを試しましたが、うまくいきません。

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

これを処理する最良の方法は何でしょうか?ありがとうございました。

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

SwiftyJSONを使用すると、次のものでJSONオブジェクトの配列を取得できます。

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

関数型プログラミングにより、 'map'関数を使用して[String]に簡単に変換できます。 SwiftyJsonでは、添え字 '.string'を使用して文字列型をキャストできます

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

SwiftyJSONを使用すると、タイプが一致しない場合、$ 0.stringを使用して_String?_を抽出し、stringValueを使用してデフォルトの空のストリング値を使用してオプションではないStringを抽出できます。

誤検出のない文字列の配列を確保したい場合は、次を使用します。

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

またはSwift 4.1

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

_self.json["array"].array_を_self.json["array"].arrayValue_に置き換えて、_[String]_の代わりに_[String]?_の結果にすることもできます。

7
jfgrang

Dictionaryを保持するArrayを保持するStringがあります。 Dictionaryの値にアクセスすると、Arraysの単純なStringが返されます。配列と同じように繰り返します。

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

これを行うだけです:

for stringInArray in json["array"]{

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