A light weight JSON Mapper.
Inspired by some JSON libraries :
According to JSONShootout, we testing the json mapping speed, and we have same performance with Marshal.
struct Sample:JSONDecodable {
let temp:Int
static func decode(_ dic: JSON) throws -> Sample {
return try Sample(temp: dic <| "temp")
}
}
let json = JSON(any: ["temp":1234])
let sample:Sample? = try? Sample.decode(json)
PrimitiveType focus on casting type and transform from string
- Casting Type
return self as? T
// return 1 as? Int
// return "1" as? Int
- Transform From String (
String -> T
)
return Int("1") // "1" -> 1
return Int("true") // "true" -> true
- Support Types
Int Int8 Int16 Int32 Int64
UInt UInt8 UInt16 UInt32 UInt64
Float Double
Bool
String
JSONDecodable is the protocol, mapping JSON
to your customize struct.
Operator | Decode element |
---|---|
<|? |
T? |
<| |
T |
<|| |
[T] |