SkillAgentSearch skills...

Skewer

🍡 Automatic support for “kebab-case” in Swift JSON encoders and decoders

Install / Use

/learn @jordanekay/Skewer
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Skewer 🍡

<div align="center">

Release License Issues Downloads

</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

View on GitHub
GitHub Stars30
CategoryCustomer
Updated1y ago
Forks1

Languages

Swift

Security Score

75/100

Audited on Mar 23, 2025

No findings