如何使用SwiftyJSON解析这种类型的JSON?
[
{
"ID": 0,
"Name": "PHI"
},
{
"ID": 0,
"Name": "ATL"
}
]
我正在使用SwiftyJSON和Alamofire。这是返回的内容。我想在我的代码中遍历这些对象中的每一个。尽管如此,我仍然无法获得这些信息。如何使用SwiftyJSON解析这种类型的JSON?
json [0] [“Name”]。string似乎返回零,我不知道为什么。 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"]
}
你的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”中。
这个“答案”是我的评论的延伸,我需要空间来显示更多的信息...
嗯..如果我按照你对我的URL所做的方式格式化我的请求,它不会再返回JSON。数据是零。 – halterdev
好的。那么我想我们正在使用不同版本的Alamofire。也许在你身边还有别的东西。 //我认为现在你应该多调试一下,检查每一步可能看起来不错但实际上是错误的(经典陷阱)。类似于1-验证Alamofire *单独*它返回数据。 2-确认这些数据是你有效的json。 3-你能用NSJSONSerializtion打印结果吗? 4-你可以用SwiftyJSON来做吗?等 – Moritz
如果你打印的JSON对象,它看起来像你?我看起来像这样:[{“ID”:0,“Name”:“Philadelphia”},{“ID”:0,“Name”:“NFL”}] – halterdev
我想你可以试试这个。使用swifyJSON
let json = JSON(data!)
然后计数在数据中的数组元素
第一转换JSON(数据)。
let count: Int? = json.array?.count
之后,用循环来达到数组元素之一。
for index in 0...count-1 {
self.idArray.append(json[index]["ID"].stringValue)
self.nameArray.append(json[index]["Name"].stringValue)
}
您将在“idArray”和“nameArray”中获得排序数据。尝试打印这两个数组。
您不必使用索引来解析数组。您可以从数组中获取单个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")
}
}
您是否尝试过打印'json [0]'? – Aks
是的,json [0]也是零。 – halterdev
如果json [0]为零,那么我认为格式化和/或检索有问题 – Tamarisk