有没有人有一个关于如何将JSON数组解析为对象集合的工作示例?在Web / SO上找到的所有各种示例似乎都在XCode / Swift版本之间中断。
这适用于最新的XCode(XCode 6)。我试过的所有不同选项都引发了错误,这些错误只是围成一圈。
示例JSON:
[
{ id: 1, name: "test" },
{ id: 2, name: "test" }
]
我的对象:
class MyItem {
var id: Int32?
var name: String?
}
答案 0 :(得分:4)
我更改了MyItem的定义并添加了打印扩展名。
class MyItem {
var id: Int?
var name: String?
init(id: Int?, name: String?){
self.id = id
self.name = name
}
}
extension MyItem: Printable {
var description: String {
return "\(self.id!): \(self.name!)"
}
}
将源字符串转换为集合:
var source = "[{ \"id\": 1, \"name\": \"test\" },{ \"id\": 2, \"name\": \"test\" }]"
var results: [MyItem] = []
var err:NSError?
var obj:AnyObject? = NSJSONSerialization.JSONObjectWithData(source.dataUsingEncoding(NSUTF8StringEncoding)!, options:nil, error:&err)
if let items = obj as? NSArray {
for itemDict in items as [NSDictionary] {
var item: MyItem = MyItem(id: itemDict.valueForKey("id")?.integerValue, name: itemDict.objectForKey("name") as? String)
results.append(item)
}
}
println(results)
没有考虑一些零例。举个例子吧。如果感兴趣,您可以使用这个流行的lib:https://github.com/SwiftyJSON/SwiftyJSON并详细跟踪代码。