CheatyJSON 是一个 Swift 框架,旨在轻松处理 JSON。
要安装此框架,只需将其 .xcodeproj 添加到您的项目中,并记得链接 .framework。
只要您想在您的代码中使用它,只需键入
import CheatyJSON
class Person:JSONSerializable { var firstName:NSString? var age:NSNumber? var isAwesome:NSNumber? init(name:NSString, age:NSNumber, isAwesome:NSNumber) { super.init() self.firstName = name self.age = age self.isAwesome = isAwesome } } var me = Person(name:"foobar", age:42, isAwesome:true) me.JSONString()
{"name":"foo","age":42,"isAwesome":true}
class Person:JSONSerializable { var firstName:NSString? var age:NSNumber? var isAwesome:NSNumber? init(name:NSString, age:NSNumber, isAwesome:NSNumber) { super.init() self.firstName = name self.age = age self.isAwesome = isAwesome } } var person = Person(name:"foobar", age:42, isAwesome:true) println(person.JSONString())
{"firstName":"foobar","age":42,"isAwesome":true}
override func registerVariables() { self.registerVariable("firstName", JSONName: "my_name") } println(person.JSONString())
{"my_name":"foobar","age":42,"isAwesome":true}
{
"first_name": "Hank",
"last_name": "Schrader",
"age": 42,
"address": {
"street_name": "Hank's street",
"postal_code": "123",
"city": "Albuquerque"
},
"friends": [
{
"first_name": "Walter",
"last_name": "White",
"age": 52,
"address": {
"street_name": "Walter's street",
"postal_code": "123",
"city": "Albuquerque"
},
"friends": []
},
{
"first_name": "Jesse",
"last_name": "Pinkman",
"age": 26,
"address": {
"street_name": "Jesse's street",
"postal_code": "123",
"city": "Albuquerque"
},
"friends": [
{
"first_name": "Jane",
"last_name": "Margolis",
"age": 27,
"address": {
"street_name": "Jane's street",
"postal_code": "123",
"city": "Albuquerque"
},
"friends": []
}
]
}
]
}
class Address:JSONSerializable {
var streetAddress: NSString?
var city: NSString?
var postalCode: NSString?
override func registerVariables() {
// Here we implement the function to match our JSON
self.registerVariable("streetAddress", JSONName: "street_name")
self.registerVariable("postalCode", JSONName: "postal_code")
// Note that city has not been registered because its name already matches our JSON
}
}
class Person:JSONSerializable {
var firstName: NSString?
var lastName: NSString?
var age: NSNumber?
var friends: [Person]?
var address = Address()
override func registerVariables() {
// Again, we register our variables to match the JSON
self.registerVariable("firstName", JSONName: "first_name")
self.registerVariable("lastName", JSONName: "last_name")
// Again, age, friends and address variables have not been registered as they already match our JSON
}
}
var data:NSData?
// here you get your data
var person = Person(JSONData:data!)
println(person.firstName)
println(person.lastName)
println(person.age)
Optional(Hank)
Optional(Schrader)
Optional(42)
override func JSONCompletion(decoder: JSONDecoder) {
self.address = Address(decoder: decoder["address"])
// Basically, this code creates your Address object given the "address" field of our JSON
// Now, we want to fill our friends array
// To do so, we're gonna simply create and fill it
self.friends = []
// First, we get our array from the "friends" JSON field
if let friendsArray = decoder["friends"].array {
// We then loop through all our 'friend' decoders
for friendDecoder in friendsArray {
// for each decoder, we will create a Person object
self.friends!.append(Person(decoder: friendDecoder))
}
}
}
{
"age": 42,
"friends": [
{
"age": 52,
"friends": [],
"last_name": "White",
"first_name": "Walter",
"address": {
"street_name": "Walter's street",
"city": "Albuquerque",
"postal_code": "123"
}
},
{
"age": 26,
"friends": [
{
"age": 27,
"friends": [],
"last_name": "Margolis",
"first_name": "Jane",
"address": {
"street_name": "Jane's street",
"city": "Albuquerque",
"postal_code": "123"
}
}
],
"last_name": "Pinkman",
"first_name": "Jesse",
"address": {
"street_name": "Jesse's street",
"city": "Albuquerque",
"postal_code": "123"
}
}
],
"last_name": "Schrader",
"first_name": "Hank",
"address": {
"street_name": "Hank's street",
"city": "Albuquerque",
"postal_code": "123"
}
}