Skip to content

Instantly share code, notes, and snippets.

View rwbutler's full-sized avatar

Ross Butler rwbutler

View GitHub Profile
struct Vehicles: Codable {
let vehicles: [Vehicle]
}
struct Vehicle: Codable {
let name: String
let travelsOn: Medium
let numberOfWheels: Int
}
{
"vehicles": [{
"name": "car",
"travels-on": "road",
"number-of-wheels": 4
}, {
"name": "boat",
"travels-on": "water",
"number-of-wheels": 0
}, {
let jsonData = try Data(contentsOf: jsonResourceURL)
let decoder = JSONDecoder()
let vehicles try decoder.decode(Vehicles.self, from: jsonData)
@rwbutler
rwbutler / json-key-decoding-vehicles-2.swift
Last active August 21, 2020 21:51
json-key-decoding-vehicles-2.swift
struct Vehicles: Codable {
let vehicles: [Vehicle]
}
struct Vehicle: Codable {
let name: String
let travelsOn: Medium
let numberOfWheels: Int
enum CodingKeys: String, CodingKey {
@rwbutler
rwbutler / json-key-decoding-vehicles-snake-case.json
Created August 21, 2020 21:55
json-key-decoding-vehicles-snake-case.json
{
"vehicles": [{
"name": "car",
"travels_on": "road",
"number_of_wheels": 4
}, {
"name": "boat",
"travels_on": "water",
"number_of_wheels": 0
}, {
@rwbutler
rwbutler / json-key-decoding-vehicles-decode-2.swift
Created August 21, 2020 21:57
json-key-decoding-vehicles-decode-2.swift
let jsonData = try Data(contentsOf: jsonResourceURL)
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let vehicles try decoder.decode(Vehicles.self, from: jsonData)
@rwbutler
rwbutler / json-key-decoding-strategy.swift
Created August 21, 2020 22:30
json-key-decoding-strategy.swift
struct AnyKey: CodingKey {
static let empty = AnyKey(string: "")
var stringValue: String
var intValue: Int?
init?(stringValue: String) {
self.stringValue = stringValue
self.intValue = nil
@rwbutler
rwbutler / json-key-decoding-vehicle-decode-3.swift
Created August 21, 2020 22:57
json-key-decoding-vehicle-decode-3.swift
let jsonData = try Data(contentsOf: jsonResourceURL)
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromKebabCase
let vehicles try decoder.decode(Vehicles.self, from: jsonData)
@rwbutler
rwbutler / json-key-decoding-vehicles-3.swift
Created August 21, 2020 23:15
json-key-decoding-vehicles-3.swift
struct Vehicles: Codable {
let VEHICLES: [Vehicle]
}
struct Vehicle: Codable {
let NAME: String
let TRAVELS_ON: Medium
let NUMBER_OF_WHEELS: Int
}
@rwbutler
rwbutler / json-key-decoding-vehicles-decode-4.swift
Created August 21, 2020 23:17
json-key-decoding-vehicles-decode-4.swift
let jsonData = try Data(contentsOf: jsonResourceURL)
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .letterCaseStrategy(from: .kebab, to: .macro)
let vehicles try decoder.decode(Vehicles.self, from: jsonData)