要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
。
要在项目中使用 SwiftAeson,您需要为所有您想使用 JSON 进行序列化和反序列化的类型实现协议 ToJSON
和 FromJSON
。以下是一个示例。首先我们定义一个类 Test
class Test : Equatable {
var test : String = "test"
var booltest : Bool = false
var booltest2 : Bool = true
var nul : NSNull = NSNull()
var doub : Double = 32.0
init() {
}
required init ( test: String, booltest : Bool, booltest2 : Bool, nul : NSNull, doub : Double) {
self.test = test
self.booltest = booltest
self.booltest2 = booltest2
self.nul = nul
self.doub = doub
}
}
func ==( a : Test, b : Test) -> Bool {
return a.test == b.test
&& a.booltest == b.booltest
&& a.booltest2 == b.booltest2
&& a.nul == b.nul
&& a.doub == b.doub
}
现在我们实现 ToJSON
和 FromJSON
。这适用于类,也适用于结构体和枚举。
extension Test : ToJSON, FromJSON {
func toJSON() -> JValue {
let test = "test" %= self.test
let booltest = "booltest" %= self.booltest
let booltest2 = "booltest2" %= self.booltest2
let nul = "null" %= self.nul
let doub = "double" %= self.doub
return Aeson.object( [ test, booltest, booltest2, nul, doub])
}
static func fromJSON( value: JValue) -> Self? {
switch value {
case .JObject( let o):
if let test : String = o %! "test" {
if let booltest : Bool = o %! "booltest" {
if let booltest2 : Bool = o %! "booltest2" {
if let nul : NSNull = o %! "null" {
if let doub : Double = o %! "double" {
return self.init(test: test, booltest: booltest, booltest2: booltest2, nul: nul, doub: doub)
}
}
}
}
}
return nil
default:
return nil
}
}
}
在这里,我们展示了如何序列化和反序列化我们的测试类。然后我们比较它们以测试原始版本和反序列化版本是否相等。
let original = Test()
let serialized = Aeson.encode( original)
let encoded = NSString(data: serialized!, encoding: NSUTF8StringEncoding)
print(encoded!)
let deserialized : Test? = Aeson.decode( serialized!)// Aeson.decode( test!)
print(deserialized!)
original == deserialized!
SwiftAeson 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中
pod "SwiftAeson"
James Parker,[email protected]
SwiftAeson 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。