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>
我正在使用 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>