如何用SwiftyJSON解析字符串数组?
问题描述:
使用SwiftyJSON
我该如何解析下面的JSON数组到Swift [String]
?如何用SwiftyJSON解析字符串数组?
{
"array": ["one", "two", "three"]
}
我曾尝试这个代码,但它不为我工作:
for (index: String, obj: JSON) in json["array"] {
println(obj.stringValue)
}
什么是处理的最佳方式?谢谢。
答
您有Dictionary
其中包含Array
其中包含String
s。当您访问Dictionary
中的值时,它会返回String
的简单Array
s。你像任何数组一样迭代它。
for obj in json["array"] {
println(obj.stringValue)
}
答
{
"myArray": ["one", "two", "three"]
}
使用SwiftyJSON,你可以得到JSON的数组对象:
var jsonArr:[JSON] = JSON["myArray"].arrayValue
函数式编程则很容易让你转换到[字符串]使用“地图”功能。 SwiftyJson让你投的字符串类型与标“.string”
var stringArr:[String] = JSON["myArray"].arrayValue.map { $0.stringValue}
答
只要做到这一点:
for stringInArray in json["array"]{
let value = stringInArray.1.stringValue
}
答
你需要做的是第一滤波器所有非字符串和再投到带地图的字符串。
var stringArray = self.json["array"].array?.filter({ $0.string != nil }).map({ $0.string! })
如果不先过滤,如果你有什么比一个字符串,它是不是你想要的,特别是当数据来自其他来源否则您的应用程序会崩溃。
这是什么** s **在'map'关闭中? – Isuru 2015-02-26 09:26:53
啊对不起,我现在编辑过,它应该是'$ 0',这是地图关闭的简写参数。 .map()将迭代json数组的每个元素,并且每次将值赋给$ 0。 – Gwendle 2015-02-26 09:57:59
谢谢。我遇到了一些与SwiftyJSON和数组类似的问题。我试图转换它,就像在你的答案,但它崩溃的错误**意外地发现零,同时解开一个可选值**。我发布了一个单独的问题[这里](http://stackoverflow.com/q/28739509/1077789)。如果可以的话,你可以看看吗?谢谢。 – Isuru 2015-02-26 10:12:45