Skip to content

Instantly share code, notes, and snippets.

@turowicz
Last active February 21, 2017 07:00
Show Gist options
  • Save turowicz/e7746a9c035356f9483d to your computer and use it in GitHub Desktop.
Save turowicz/e7746a9c035356f9483d to your computer and use it in GitHub Desktop.
Apple Swift strong type object serialization to JSON
import XCTest
class Person:Serializable{
var Name : String
var Surname : String
var Animals : Array<Animal>
init(Name:String, Surname:String) {
self.Name = Name
self.Surname = Surname
self.Animals = Array<Animal>()
}
}
class Animal:Serializable {
var Nickname : String
var Kind : String
init(Nickname : String, Kind : String) {
self.Nickname = Nickname
self.Kind = Kind
}
}
class SerializationTests: XCTestCase {
func test_serialization_works() {
var john = Person(Name: "John", Surname: "Doe")
john.Animals.append(Animal(Nickname: "Fluffy", Kind: "Dog"))
john.Animals.append(Animal(Nickname: "Purry", Kind: "Cat"))
println(john.toJson()) //will give binary data to include in HTTP Body
println(john.toJsonString()) //will give the exact string in JSON
//{"Surname":"Doe","Name":"John","Animals":[{"Kind":"Dog","Nickname":"Fluffy"},{"Kind":"Cat","Nickname":"Purry"}]}
var expected = "{\"Surname\":\"Doe\",\"Name\":\"John\",\"Animals\":[{\"Kind\":\"Dog\",\"Nickname\":\"Fluffy\"},{\"Kind\":\"Cat\",\"Nickname\":\"Purry\"}]}";
XCTAssertEqual(john.toJsonString(), expected,"")
}
}
@turowicz
Copy link
Author

Issues created for anyone who'd like to contribute https://github.com/Mailcloud/swift-serializer/issues?q=is%3Aopen+is%3Aissue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment