Skewer
🍡 Automatic support for “kebab-case” in Swift JSON encoders and decoders
Install / Use
/learn @jordanekay/SkewerREADME
Skewer 🍡
<div align="center"> </div>Provides support for "kebab-case" formatted (as opposed to just "snake_case" formatted) coding keys for JSONEncoder and JSONDecoder.
Encoding
struct Website: Encodable {
let homepageURLString: String
}
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToKebabCase
let website = Website(homepageURLString: "http://www.apple.com")
let data = try! encoder.encode(website)
let json = try! JSONSerialization.jsonObject(with: data, options: []) as! [String: Any]
let convertedKey = json.keys.first!
// homepage-url-string
Decoding
struct App: Decodable {
let downloadCount: Int
}
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromKebabCase
let json = ["download-count": 999]
let data = try! JSONSerialization.data(withJSONObject: json, options: [])
let app = try! decoder.decode(App.self, from: data)
let downloadCount = app.downloadCount
// 999
Installation
Using the Swift Package Manager
Add Skewer as a dependency to your Package.swift file. For more information, see the Swift Package Manager documentation.
.package(url: "https://github.com/Fleuronic/Skewer", from: "3.0.0")
License
Skewer is available under the MIT license. See the LICENSE file for more info.
Related Skills
openhue
347.2kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
347.2kElevenLabs text-to-speech with mac-style say UX.
weather
347.2kGet current weather and forecasts via wttr.in or Open-Meteo
Better-Prompt
Publishable Prompt Engineering skill package that compiles a user request into a ready-to-use high-quality Prompt, with support for diagnosis, module injection, debugging, and evaluation.
