JSON 在 Swift 中排列

JSON To Array in Swift

我正在使用 Swift2.0+、SwiftyJSON、Alamofire

我从服务器

获得了值 let stringJSON:JSON = ["a1","a2","a3"]

但是如果我检查 stringJSON[0],那么它就是 null

当我debugPrint(stringJSON),那么就是["a1","a2","a3"]

如何获取值 stringJSON[0] //"a1"

我是否必须从 JSON 转换为另一个?

if let x = stringJSON[0].string{
print(x)
}

正确的语法是

let stringJSON:JSON = ["a1","a2","a3"]

if let firstValue = stringJSON.array?.first {
    print(firstValue) // a1
}

更新

由于该值实际上包含此字符串 "[\"a1\/a1\",\"a2\/a2\",\"a3\"]" 并且您无法在服务器端修复此问题,因此这是一种解决方法。

if let words = stringJSON.string?.characters.dropFirst().dropLast().split(",").map(String.init) {
    let word = String(words[0].characters.dropFirst().dropLast())
    print(word) // a1
}

由于服务器返回的不是数组,而是字符串,因此您需要将其转换为字符串数组,如下所示:

let string = stringJSON.string
let array = string.stringByReplacingOccurrencesOfString("[", withString: "")
    .stringByReplacingOccurrencesOfString("]", withString: "")
    .stringByReplacingOccurrencesOfString("\"", withString: "")
    .componentsSeparatedByString(",")

stringJSON如果是string类型,可以这样解决:

extension String {

var parseJSONString: AnyObject? {
    var any: AnyObject?
    let data = self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
    do{
        any = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers)
    }catch let error as NSError{
        print("error: \(error)")
    }
    return any
}

并像这样使用它:

let strArr = stringJSON.stringvalue.parseJSONString as! Array<String>