Fargo 是一个 JSON 解析库,主要灵感来自于功能性的 JSON 解析库 Argo。最初是一个分支,但后来改变了很多概念,主要是在 Swift 2.0 之后,极大地简化了解析代码,并现在依赖于 do/catch 来处理错误。
将此仓库作为子模块添加,并将 Fargo
子文件夹中的所有文件添加到您的工作空间。
struct ExampleModel {
var id: Int
var text: String?
var date: NSDate?
var url: NSURL?
var tags: [String]
}
extension ExampleModel : Decodable {
static func decode(json: JSON) throws -> ExampleModel {
return ExampleModel(
id: try json.value("id"),
text: try json.value("text"),
date: try json.value("date", transform: dateFromString),
url: try json.value("url", transform: { NSURL(string: $0) }),
tags: try json.value("tags")
)
}
}
// From your JSON data
let dict: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: nil)
if let dict = dict {
do {
let model: ExampleModel = try JSON.convert(json).decode()
} catch {
XCTFail("Decoding ExampleModel failed with error: \(error)")
}
}
有关如何使用 Fargo 的更多示例,请查看测试。