使用SwiftyJSON
如何将以下JSON数组解析为Swift [String]
?
{
"array": ["one", "two", "three"]
}
我试过这段代码,但它对我不起作用:
for (index: String, obj: JSON) in json["array"] {
println(obj.stringValue)
}
处理此问题的最佳方法是什么?谢谢。
答案 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
中的值时,会返回Array
个String
的简单for obj in json["array"] {
println(obj.stringValue)
}
。你像任何数组一样迭代它。
{{1}}
答案 3 :(得分:4)
只需这样做:
for stringInArray in json["array"]{
let value = stringInArray.1.stringValue
}