Guest User

Untitled

a guest
Oct 19th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.73 KB | None | 0 0
  1. User user = jsonResponse.readEntity(User.class);
  2.  
  3. {
  4. "name": "myUser",
  5. "email": "user@example.com",
  6. "password": "passwordHash"
  7. }
  8.  
  9. class Person : NSObject {
  10. var name : String = ""
  11. var email : String = ""
  12. var password : String = ""
  13.  
  14. init(JSONString: String) {
  15. super.init()
  16.  
  17. var error : NSError?
  18. let JSONData = JSONString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
  19.  
  20. let JSONDictionary: Dictionary = NSJSONSerialization.JSONObjectWithData(JSONData, options: nil, error: &error) as NSDictionary
  21.  
  22. // Loop
  23. for (key, value) in JSONDictionary {
  24. let keyName = key as String
  25. let keyValue: String = value as String
  26.  
  27. // If property exists
  28. if (self.respondsToSelector(NSSelectorFromString(keyName))) {
  29. self.setValue(keyValue, forKey: keyName)
  30. }
  31. }
  32. // Or you can do it with using
  33. // self.setValuesForKeysWithDictionary(JSONDictionary)
  34. // instead of loop method above
  35. }
  36. }
  37.  
  38. override func viewDidLoad() {
  39. super.viewDidLoad()
  40. let jsonString = "{ "name":"myUser", "email":"user@example.com", "password":"passwordHash" }"
  41. var aPerson : Person = Person(JSONString: jsonString)
  42. println(aPerson.name) // Output is "myUser"
  43. }
  44.  
  45. extension NSObject{
  46. convenience init(jsonStr:String) {
  47. self.init()
  48.  
  49. if let jsonData = jsonStr.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
  50. {
  51. do {
  52. let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
  53.  
  54. // Loop
  55. for (key, value) in json {
  56. let keyName = key as String
  57. let keyValue: String = value as! String
  58.  
  59. // If property exists
  60. if (self.respondsToSelector(NSSelectorFromString(keyName))) {
  61. self.setValue(keyValue, forKey: keyName)
  62. }
  63. }
  64.  
  65. } catch let error as NSError {
  66. print("Failed to load: (error.localizedDescription)")
  67. }
  68. }
  69. else
  70. {
  71. print("json is of wrong format!")
  72. }
  73. }
  74. }
  75.  
  76. class Person : NSObject {
  77. var name : String?
  78. var email : String?
  79. var password : String?
  80. }
  81.  
  82. class Address : NSObject {
  83. var city : String?
  84. var zip : String?
  85. }
  86.  
  87. var jsonString = "{ "name":"myUser", "email":"user@example.com", "password":"passwordHash" }"
  88. let aPerson = Person(jsonStr: jsonString)
  89. print(aPerson.name!) // Output is "myUser"
  90.  
  91. jsonString = "{ "city":"Berlin", "zip":"12345" }"
  92. let aAddress = Address(jsonStr: jsonString)
  93. print(aAddress.city!) // Output is "Berlin"
  94.  
  95. let userObject = UserClass(userDictionary)
  96. print(userObject!.name)
  97.  
  98. let obj:[String:AnyObject] = [
  99. "array": [JSON.null, false, 0, "", [], [:]],
  100. "object":[
  101. "null": JSON.null,
  102. "bool": true,
  103. "int": 42,
  104. "double": 3.141592653589793,
  105. "string": "a αt弾n𪚲",
  106. "array": [],
  107. "object": [:]
  108. ],
  109. "url":"http://blog.livedoor.com/dankogai/"
  110. ]
  111.  
  112. let json = JSON(obj)
  113.  
  114. json.toString()
  115. json["object"]["null"].asNull // NSNull()
  116. json["object"]["bool"].asBool // true
  117. json["object"]["int"].asInt // 42
  118. json["object"]["double"].asDouble // 3.141592653589793
  119. json["object"]["string"].asString // "a αt弾n𪚲"
  120. json["array"][0].asNull // NSNull()
  121. json["array"][1].asBool // false
  122. json["array"][2].asInt // 0
  123. json["array"][3].asString // ""
  124.  
  125. //// schema by subclassing
  126. class MyJSON : JSON {
  127. override init(_ obj:AnyObject){ super.init(obj) }
  128. override init(_ json:JSON) { super.init(json) }
  129. var null :NSNull? { return self["null"].asNull }
  130. var bool :Bool? { return self["bool"].asBool }
  131. var int :Int? { return self["int"].asInt }
  132. var double:Double? { return self["double"].asDouble }
  133. var string:String? { return self["string"].asString }
  134. var url: String? { return self["url"].asString }
  135. var array :MyJSON { return MyJSON(self["array"]) }
  136. var object:MyJSON { return MyJSON(self["object"]) }
  137. }
  138.  
  139. let myjson = MyJSON(obj)
  140. myjson.object.null // NSNull?
  141. myjson.object.bool // Bool?
  142. myjson.object.int // Int?
  143. myjson.object.double // Double?
  144. myjson.object.string // String?
  145. myjson.url // String?
  146.  
  147. var myInstance = MyClass(data: jsonDictionary)
  148.  
  149. myInstance <-- jsonDictionary
  150.  
  151. struct SomeObjectType: Deserializable {
  152. var someProperty: Int?
  153. var someOtherProperty: AnotherObjectType?
  154. var yetAnotherProperty: [YetAnotherObjectType]?
  155.  
  156. init(data: [String: AnyObject]) {
  157. someProperty <-- data["some_key"]
  158. someOtherProperty <-- data["some_other_key"]
  159. yetAnotherProperty <-- data["yet_another_key"]
  160. }
  161. }
  162.  
  163. struct Person: Deserializable {
  164. var name: String?
  165. var email: String?
  166. var password: String?
  167.  
  168. init(data: [String: AnyObject]) {
  169. name <-- data["name"]
  170. email <-- data["email"]
  171. password <-- data["password"]
  172. }
  173. }
  174.  
  175. var user:User = User(json:jsonString)
  176.  
  177. var jsonString:String = user.toJsonString()
  178.  
  179. init?(attributes: [String : AnyObject]) {
  180. guard let name = attributes["name"] as? String,
  181. let coordinates = attributes["coordinates"] as? [String: Double],
  182. let latitude = coordinates["lat"],
  183. let longitude = coordinates["lng"],
  184. else {
  185. return nil
  186. }
  187. self.name = name
  188. self.coordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
  189. }
  190.  
  191. // Array of parsed objects
  192. var parsedObjects = [ParsedObject]()
  193. do {
  194. let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as [Dictionary<String, AnyObject>]
  195. // Loop through objects
  196. for dict in json {
  197. // ParsedObject is a single instance of an object inside the JSON data
  198. // Its properties are a mixture of String, Int, Double and Bool
  199. let parsedObject = ParsedObject()
  200. // Loop through key/values in object parsed from JSON
  201. for (key, value) in json {
  202. // If property exists, set the value
  203. if (parsedObject.respondsToSelector(NSSelectorFromString(keyName))) {
  204. // setValue can handle AnyObject when assigning property value
  205. parsedObject.setValue(keyValue, forKey: keyName)
  206. }
  207. }
  208. parsedObjects.append(parsedObject)
  209. }
  210. } catch let error as NSError {
  211. print("Failed to load: (error.localizedDescription)")
  212. }
  213.  
  214. // Array of parsed objects
  215. var parsedObjects = [ParsedObject]()
  216. do {
  217. let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as [Dictionary<String, AnyObject>]
  218. // Loop through objects
  219. for dict in json {
  220. // ParsedObject is a single instance of an object inside the JSON data
  221. // Its properties are a mixture of String, Int, Double and Bool
  222. let parsedObject = ParsedObject()
  223. // Loop through key/values in object parsed from JSON
  224. for (key, value) in json {
  225. // If property exists, set the value
  226. if (parsedObject.respondsToSelector(NSSelectorFromString(keyName))) {
  227. // setValue can handle AnyObject when assigning property value
  228. parsedObject.setValue(keyValue, forKey: keyName)
  229. }
  230. }
  231. parsedObjects.append(parsedObject)
  232. }
  233. } catch let error as NSError {
  234. print("Failed to load: (error.localizedDescription)")
  235. }
  236.  
  237. let urlS = "http://api.localhost:3000/"
  238.  
  239. func getUser(username: Strung) -> User {
  240. var user = User()
  241. let url = NSURL(string: "(urlS)(username)")
  242. if let data = NSData(contentsOfURL: url!) {
  243. setKeysAndValues(user, dictionary: parseData(data))
  244. }
  245. return user
  246. }
  247.  
  248. func setKeysAndValues (object : AnyObject, dictionary : NSDictionary) -> AnyObject {
  249. for (key, value) in dictionary {
  250. if let key = key as? String, let value = value as? String {
  251. if (object.respondsToSelector(NSSelectorFromString(key))) {
  252. object.setValue(value, forKey: key)
  253. }
  254. }
  255. }
  256. return object
  257. }
  258.  
  259. func parseData (data : NSData) -> NSDictionary {
  260. var error: NSError?
  261. return NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as! NSDictionary
  262. }
  263.  
  264. if let data = data,
  265. json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject] {
  266. // Do stuff
  267. } else {
  268. // Do stuff
  269. print("No Data :/")
  270. }
  271.  
  272. let email = json["email"] as? String
  273. let name = json["name"] as? String
  274. let password = json["password"] as? String
  275.  
  276. print("Found User iname: (name) with email: (email) and pass (password)")
Add Comment
Please, Sign In to add comment