将 Apple Swift 强类型对象序列化为 JSON
import XCTest
class Person:Serializable {
var Name : String
var Surname : String
var BirthTimestamp : NSNumber
var Animals : Array<Animal>
init(Name:String, Surname:String, BirthTimestamp:NSNumber) {
self.Name = Name
self.Surname = Surname
self.BirthTimestamp = BirthTimestamp
self.Animals = Array<Animal>()
}
}
class Animal:Serializable {
var Nickname : String
var Kind : String
var Trick : String?
init(Nickname : String, Kind : String, Trick : String?) {
self.Nickname = Nickname
self.Kind = Kind
self.Trick = Trick
}
}
class SerializationTests: XCTestCase {
func test_serialization_works() {
var john = Person(Name: "John", Surname: "Doe", BirthTimestamp: 512463600000)
john.Animals.append(Animal(Nickname: "Fluffy", Kind: "Dog", Trick: "Rollover"))
john.Animals.append(Animal(Nickname: "Purry", Kind: "Cat", Trick: nil))
println(john.toJson()) //will give binary data to include in HTTP Body
println(john.toJsonString()) //will give the exact string in JSON
var expected = "{\"BirthTimestamp\":512463600000,\"Name\":\"John\",\"Animals\":[{\"Trick\":\"Rollover\",\"Kind\":\"Dog\",\"Nickname\":\"Fluffy\"},{\"Kind\":\"Cat\",\"Nickname\":\"Purry\"}],\"Surname\":\"Doe\"}";
XCTAssertEqual(john.toJsonString(), expected,"")
}
}
我们将接受此项目上所有有效的 Pull Requests、特性请求和其他问题。有任何疑问,请随时提出。