如何用SwiftyJSON解析字符串数组?

时间:2014-11-24 10:31:33

标签: ios json swift

使用SwiftyJSON如何将以下JSON数组解析为Swift [String]

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

我试过这段代码,但它对我不起作用:

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

处理此问题的最佳方法是什么?谢谢。

4 个答案:

答案 0 :(得分:77)

{
    "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}

答案 1 :(得分:7)

如果类型不匹配,SwiftyJSON允许您使用带有默认空字符串值的stringValue使用$ 0.string或非可选String?提取String

如果您想确保具有非误报的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]?

答案 2 :(得分:5)

您有一个Dictionary,其中包含Array,其中包含String个。当您访问Dictionary中的值时,会返回ArrayString的简单for obj in json["array"] { println(obj.stringValue) } 。你像任何数组一样迭代它。

{{1}}

答案 3 :(得分:4)

只需这样做:

for stringInArray in json["array"]{

    let value = stringInArray.1.stringValue
}