[
{
"ID": 0,
"Name": "PHI"
},
{
"ID": 0,
"Name": "ATL"
}
]
我使用的是SwiftyJSON和Alamofire。这就是返回的内容。我想在我的代码中遍历每个对象。我收到这些信息时遇到了麻烦。
json [0] [" Name"]。字符串似乎返回nil,我不知道为什么。 JSON对象肯定是JSON,当我将它打印到控制台时,它看起来就像上面一样。
我也尝试过:
var name = json[0].dictionary?["Name"]
仍然没有。
有什么想法吗?
编辑
这是我用来检索JSON的代码。
Alamofire.request(.GET, "url", parameters: nil, encoding: .JSON, headers: nil).responseJSON
{
(request, response, data, error) in
var json = JSON(data!)
//var name = json[0].dictionary?["Name"]
}
答案 0 :(得分:0)
你的JSON是有效的(至少是这个片段),你从SwiftyJSON检索数据的第一种方法是正确的。
另一方面,你展示的Alamofire片段并没有为我编译,我不得不改变签名。
鉴于您在评论中说不仅json[0]["Name"]
为零,json[0]
也为零,我认为您的数据获取方式存在问题。
我在示例应用中测试了此版本的Alamofire方法,效果很好:
Alamofire.request(.GET, yourURL).responseJSON(options: nil) { (request, response, data, error) in
let json = JSON(data!)
let name = json[0]["Name"].string
println(name)
}
在屏幕截图中,URL是我的本地服务器,您的JSON副本粘贴在" test.json"。
这个"回答"是我的评论的延伸,我需要空间来显示更多信息...
答案 1 :(得分:0)
我想你可以试试这个。
首先使用swifyJSON转换JSON(数据)
let json = JSON(data!)
然后计算数据中的数组元素。
let count: Int? = json.array?.count
之后使用for循环来到达数组元素一。
for index in 0...count-1 {
self.idArray.append(json[index]["ID"].stringValue)
self.nameArray.append(json[index]["Name"].stringValue)
}
您将在“idArray”和“nameArray”中获取已排序的数据。尝试打印两个阵列。
答案 2 :(得分:0)
您不必使用索引来解析数组。您可以从数组中获取单个json对象,并使用它来访问数据:
for (index: String, subJson: JSON) in json {
println("Current Index = \(index)")
if let _id = subJson["ID"].int {
println("ID = \(_id)")
} else {
println("Error ID")
}
if let _name = subJson["Name"].string {
println("Name = \(_name)")
} else {
println("Error Name")
}
}