使用Swift将JSON字符串解析为对象

时间:2014-10-24 01:02:54

标签: ios json swift xcode6

有没有人有一个关于如何将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?
}

1 个答案:

答案 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并详细跟踪代码。