Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- User user = jsonResponse.readEntity(User.class);
- {
- "name": "myUser",
- "email": "user@example.com",
- "password": "passwordHash"
- }
- class Person : NSObject {
- var name : String = ""
- var email : String = ""
- var password : String = ""
- init(JSONString: String) {
- super.init()
- var error : NSError?
- let JSONData = JSONString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
- let JSONDictionary: Dictionary = NSJSONSerialization.JSONObjectWithData(JSONData, options: nil, error: &error) as NSDictionary
- // Loop
- for (key, value) in JSONDictionary {
- let keyName = key as String
- let keyValue: String = value as String
- // If property exists
- if (self.respondsToSelector(NSSelectorFromString(keyName))) {
- self.setValue(keyValue, forKey: keyName)
- }
- }
- // Or you can do it with using
- // self.setValuesForKeysWithDictionary(JSONDictionary)
- // instead of loop method above
- }
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- let jsonString = "{ "name":"myUser", "email":"user@example.com", "password":"passwordHash" }"
- var aPerson : Person = Person(JSONString: jsonString)
- println(aPerson.name) // Output is "myUser"
- }
- extension NSObject{
- convenience init(jsonStr:String) {
- self.init()
- if let jsonData = jsonStr.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
- {
- do {
- let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
- // Loop
- for (key, value) in json {
- let keyName = key as String
- let keyValue: String = value as! String
- // If property exists
- if (self.respondsToSelector(NSSelectorFromString(keyName))) {
- self.setValue(keyValue, forKey: keyName)
- }
- }
- } catch let error as NSError {
- print("Failed to load: (error.localizedDescription)")
- }
- }
- else
- {
- print("json is of wrong format!")
- }
- }
- }
- class Person : NSObject {
- var name : String?
- var email : String?
- var password : String?
- }
- class Address : NSObject {
- var city : String?
- var zip : String?
- }
- var jsonString = "{ "name":"myUser", "email":"user@example.com", "password":"passwordHash" }"
- let aPerson = Person(jsonStr: jsonString)
- print(aPerson.name!) // Output is "myUser"
- jsonString = "{ "city":"Berlin", "zip":"12345" }"
- let aAddress = Address(jsonStr: jsonString)
- print(aAddress.city!) // Output is "Berlin"
- let userObject = UserClass(userDictionary)
- print(userObject!.name)
- let obj:[String:AnyObject] = [
- "array": [JSON.null, false, 0, "", [], [:]],
- "object":[
- "null": JSON.null,
- "bool": true,
- "int": 42,
- "double": 3.141592653589793,
- "string": "a αt弾n𪚲",
- "array": [],
- "object": [:]
- ],
- "url":"http://blog.livedoor.com/dankogai/"
- ]
- let json = JSON(obj)
- json.toString()
- json["object"]["null"].asNull // NSNull()
- json["object"]["bool"].asBool // true
- json["object"]["int"].asInt // 42
- json["object"]["double"].asDouble // 3.141592653589793
- json["object"]["string"].asString // "a αt弾n𪚲"
- json["array"][0].asNull // NSNull()
- json["array"][1].asBool // false
- json["array"][2].asInt // 0
- json["array"][3].asString // ""
- //// schema by subclassing
- class MyJSON : JSON {
- override init(_ obj:AnyObject){ super.init(obj) }
- override init(_ json:JSON) { super.init(json) }
- var null :NSNull? { return self["null"].asNull }
- var bool :Bool? { return self["bool"].asBool }
- var int :Int? { return self["int"].asInt }
- var double:Double? { return self["double"].asDouble }
- var string:String? { return self["string"].asString }
- var url: String? { return self["url"].asString }
- var array :MyJSON { return MyJSON(self["array"]) }
- var object:MyJSON { return MyJSON(self["object"]) }
- }
- let myjson = MyJSON(obj)
- myjson.object.null // NSNull?
- myjson.object.bool // Bool?
- myjson.object.int // Int?
- myjson.object.double // Double?
- myjson.object.string // String?
- myjson.url // String?
- var myInstance = MyClass(data: jsonDictionary)
- myInstance <-- jsonDictionary
- struct SomeObjectType: Deserializable {
- var someProperty: Int?
- var someOtherProperty: AnotherObjectType?
- var yetAnotherProperty: [YetAnotherObjectType]?
- init(data: [String: AnyObject]) {
- someProperty <-- data["some_key"]
- someOtherProperty <-- data["some_other_key"]
- yetAnotherProperty <-- data["yet_another_key"]
- }
- }
- struct Person: Deserializable {
- var name: String?
- var email: String?
- var password: String?
- init(data: [String: AnyObject]) {
- name <-- data["name"]
- email <-- data["email"]
- password <-- data["password"]
- }
- }
- var user:User = User(json:jsonString)
- var jsonString:String = user.toJsonString()
- init?(attributes: [String : AnyObject]) {
- guard let name = attributes["name"] as? String,
- let coordinates = attributes["coordinates"] as? [String: Double],
- let latitude = coordinates["lat"],
- let longitude = coordinates["lng"],
- else {
- return nil
- }
- self.name = name
- self.coordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
- }
- // Array of parsed objects
- var parsedObjects = [ParsedObject]()
- do {
- let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as [Dictionary<String, AnyObject>]
- // Loop through objects
- for dict in json {
- // ParsedObject is a single instance of an object inside the JSON data
- // Its properties are a mixture of String, Int, Double and Bool
- let parsedObject = ParsedObject()
- // Loop through key/values in object parsed from JSON
- for (key, value) in json {
- // If property exists, set the value
- if (parsedObject.respondsToSelector(NSSelectorFromString(keyName))) {
- // setValue can handle AnyObject when assigning property value
- parsedObject.setValue(keyValue, forKey: keyName)
- }
- }
- parsedObjects.append(parsedObject)
- }
- } catch let error as NSError {
- print("Failed to load: (error.localizedDescription)")
- }
- // Array of parsed objects
- var parsedObjects = [ParsedObject]()
- do {
- let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as [Dictionary<String, AnyObject>]
- // Loop through objects
- for dict in json {
- // ParsedObject is a single instance of an object inside the JSON data
- // Its properties are a mixture of String, Int, Double and Bool
- let parsedObject = ParsedObject()
- // Loop through key/values in object parsed from JSON
- for (key, value) in json {
- // If property exists, set the value
- if (parsedObject.respondsToSelector(NSSelectorFromString(keyName))) {
- // setValue can handle AnyObject when assigning property value
- parsedObject.setValue(keyValue, forKey: keyName)
- }
- }
- parsedObjects.append(parsedObject)
- }
- } catch let error as NSError {
- print("Failed to load: (error.localizedDescription)")
- }
- let urlS = "http://api.localhost:3000/"
- func getUser(username: Strung) -> User {
- var user = User()
- let url = NSURL(string: "(urlS)(username)")
- if let data = NSData(contentsOfURL: url!) {
- setKeysAndValues(user, dictionary: parseData(data))
- }
- return user
- }
- func setKeysAndValues (object : AnyObject, dictionary : NSDictionary) -> AnyObject {
- for (key, value) in dictionary {
- if let key = key as? String, let value = value as? String {
- if (object.respondsToSelector(NSSelectorFromString(key))) {
- object.setValue(value, forKey: key)
- }
- }
- }
- return object
- }
- func parseData (data : NSData) -> NSDictionary {
- var error: NSError?
- return NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as! NSDictionary
- }
- if let data = data,
- json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject] {
- // Do stuff
- } else {
- // Do stuff
- print("No Data :/")
- }
- let email = json["email"] as? String
- let name = json["name"] as? String
- let password = json["password"] as? String
- print("Found User iname: (name) with email: (email) and pass (password)")
Add Comment
Please, Sign In to add comment