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

The*_*mad 39 json ios swift

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

{
    "array": ["one", "two", "three"]
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Gwe*_*dle 89

{
    "myArray": ["one", "two", "three"]
}
Run Code Online (Sandbox Code Playgroud)

使用SwiftyJSON,您可以获得一个JSON对象数组:

var jsonArr:[JSON] = JSON["myArray"].arrayValue
Run Code Online (Sandbox Code Playgroud)

然后,函数编程可以使您使用"map"函数轻松转换为[String].SwiftyJson让你使用下标'.string'来转换字符串类型

var stringArr:[String] = JSON["myArray"].arrayValue.map { $0.stringValue}
Run Code Online (Sandbox Code Playgroud)

  • 只需使用.stringValue而不是.string和nil或错误类型只返回一个空字符串.`JSON ["myArray"].arrayValue.map {$ 0.stringValue}` (4认同)
  • 当接收到包含非字符串值的json数组时,这将在运行时失败.我建议改为:`JSON ["myArray"].arrayValue.map {"\($ 0)"}`. (2认同)

jfg*_*ang 7

如果类型不匹配,SwiftyJSON允许您String?使用$ 0.string或非可选String使用stringValue和默认的空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"].arrayself.json["array"].arrayValue[String]结果,而不是[String]?.


Jef*_*mas 5

你有一个Dictionary持有的Array持有String秒.当您访问中的值时Dictionary,它返回一个简单ArrayStrings.你像任何数组一样迭代它.

for obj in json["array"] {
    println(obj.stringValue)
}
Run Code Online (Sandbox Code Playgroud)