Guest User

Untitled

a guest
Feb 19th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. import Foundation
  2. import UIKit
  3.  
  4.  
  5. var str = """
  6. {
  7. "name": "Endeavor",
  8. "abv": 8.9,
  9. "brewery": "Saint Arnold",
  10. "style": "ipa"
  11. }
  12.  
  13. """
  14.  
  15. enum BeerStyle:String,Codable {
  16. case ipa
  17. case stout
  18. case kolsch
  19. }
  20.  
  21. struct Beer : Codable {
  22. let name : String
  23. let brewery : String
  24. let style : BeerStyle
  25. let abv : Float
  26.  
  27. // Custom Keys for Encoding.
  28. enum EncodingKeys: String, CodingKey {
  29. case name = "name-alternative"
  30. case abv = "alcohol_by_volume"
  31. case brewery = "brewery_name"
  32. case style
  33. }
  34.  
  35. func encode(to encoder: Encoder) throws {
  36. var container = encoder.container(keyedBy: EncodingKeys.self) // Encoding keys are referenced here
  37. try container.encode(name, forKey: .name)
  38. try container.encode(brewery, forKey: .brewery)
  39. try container.encode(style, forKey: .style)
  40. try container.encode(abv, forKey: .abv)
  41. }
  42.  
  43. }
  44.  
  45. let jsonData = str.data(using: .utf8)!
  46. let decoder = JSONDecoder() // This uses auto generated CodingKeys
  47. let beer = try! decoder.decode(Beer.self, from: jsonData)
  48.  
  49. let encoder = JSONEncoder()
  50. let json = try! encoder.encode(beer)
  51. let jsonString = String(data: json, encoding: .utf8)
  52. // json String = {"style":"ipa","alcohol_by_volume":8.8999996185302734,"brewery_name":"Saint Arnold","name-alternative":"Endeavor"}"
Add Comment
Please, Sign In to add comment