yutomizutani/jsontocodable
**JSONtoCodable** is a generating tool from Raw JSON to Codable (Swift4) text written in Swift4.
TL;DR
From JSON,
{
"user": {
"Name": "Yuto Mizutani"
},
"lib": {
"lib-name": "JSONtoCodable",
"year": 2018,
"version": "1.0.2",
"released": "2018-09-22"
},
"text": "Hello, world!!"
}to Codable.
public struct Result: Codable {
public let user: User
public let lib: Lib
public let text: String
public struct User: Codable {
public let name: String
private enum CodingKeys: String, CodingKey {
case name = "Name"
}
}
public struct Lib: Codable {
public let libName: String
public let year: Int
public let version: String
public let released: String
private enum CodingKeys: String, CodingKey {
case libName = "lib-name"
case year
case version
case released
}
}
}[JaCo (macOS App)](https://github.com/YutoMizutani/JSONtoCodable/tree/master/Apps/JaCo)
[demo_macos.png]
[jc (CLI App)](https://github.com/YutoMizutani/JSONtoCodable/tree/master/Apps/jc)
Installation
$ brew tap YutoMizutani/jc
$ brew install jcUsage example
$ curl https://httpbin.org/get | jcor generate .swift file,
$ curl https://httpbin.org/get | jc > Result.swiftHelp command
$ jc -hScreen shot
[demo_cli.png]
Support formats
- Type
- String - Bool - Int - Double - struct(s) - Optional<T>
- Array
- Start array - Muptiple array - Arrayed objects - Optional array
- Number of nested array and objects
- Infinity
- Number of spaces in entered JSON
- 0 to infinity
Translations
|JSON Value|Swift Type| |:-:|:-:| |"text"|String| |true|Bool| |-10|Int| |1.0|Double| |null|\<Foo\>?| |(the others)|Any|
Usage
import JSONtoCodable
let json: String = """
{
"Hello": "Hello, world!!"
}
"""
let jsonToCodable = JSONtoCodable()
let codable = try? jsonToCodable.generate(json)
print(codable)
/*
struct Result: Codable {
let hello: String
private enum CodingKeys: String, CodingKey {
case hello = "Hello"
}
}
*/Config
let config = Config()
config.name = "Result" // struct Result: Codable {}
config.accessModifier = AccessModifier.public // public struct
config.caseType = (variable: CaseType.camel, struct: CaseType.pascal)
config.lineType = LineType.lineFeed
config.indentType = IndentType.space(4)Installation
Cocoapods
Add this to your Podfile:
pod 'JSONtoCodable'and
$ pod installCarthage
Add this to your Cartfile:
github "YutoMizutani/JSONtoCodable"and
$ carthage updateLicense
JSONtoCodable is available under the MIT license.
Package Metadata
Repository: yutomizutani/jsontocodable
Default branch: master
README: README.md