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

Ios 如何使用SwiftyJSON解析字符串数组?,ios,json,swift,Ios,Json,Swift,使用SwiftyJSON如何将以下JSON数组解析为Swift[String] { "array": ["one", "two", "three"] } 我尝试过此代码,但对我无效: for (index: String, obj: JSON) in json["array"] { println(obj.stringValue) } 处理这个问题的最佳方法是什么?谢谢。您有一个字典,其中包含一个数组,其中包含字符串s。当您访问字典中的值时,它将返回一个简单的

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

{
    "array": ["one", "two", "three"]
}
我尝试过此代码,但对我无效:

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

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

您有一个
字典
,其中包含一个
数组
,其中包含
字符串
s。当您访问
字典
中的值时,它将返回一个简单的
数组
,其中包含
字符串
s。您可以像迭代任何数组一样迭代它

for obj in json["array"] {
    println(obj.stringValue)
}
使用SwiftyJSON,您可以通过以下方式获得JSON对象数组:

var jsonArr:[JSON] = JSON["myArray"].arrayValue
然后,函数式编程使您可以轻松地使用“map”函数转换为[String]。SwiftyJson让您使用下标“.string”强制转换字符串类型

var stringArr:[String] = JSON["myArray"].arrayValue.map { $0.stringValue}
只需这样做:

for stringInArray in json["array"]{

    let value = stringInArray.1.stringValue
}

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]?

映射闭包中的是什么?啊,对不起,我现在编辑了,映射闭包的速记参数应该是“$0”。map()将遍历json数组的每个元素,并每次将值赋给$0。谢谢。我在SwiftyJSON和数组方面也面临类似的问题。我试着像在你的答案中那样转换它,但它崩溃了,在打开可选值时意外地发现了nil。我贴了一个单独的问题。如果可以的话,你能看一下吗?谢谢。当收到包含非字符串值的json数组时,这将在运行时失败。我建议更改为:
JSON[“myArray”].arrayValue.map{“\($0)”}
。只需使用.stringValue而不是.string,而nil或错误的类型只返回一个空字符串
JSON[“myArray”].arrayValue.map{$0.stringValue}
您可以使用flatMap过滤等于nilThank@PabloMarrufo的字符串。使用它改进了回复,并在Swift 4.1中引入了compactMap
for stringInArray in json["array"]{

    let value = stringInArray.1.stringValue
}