CheatyJSON 1.1

CheatyJSON 1.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2015年4月
SPM支持 SPM

Alexandre RONSE维护。



CheatyJSON

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"
  }
}