yume190/JSONDecodeKit

A Light weight JSON Mapper


Keywords
carthage, cocoapods, ios, json, mac, swift
License
MIT

Documentation

JSONDecodeKit

Build Status codecov codebeat badge

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.

Usage

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)

Protocols

PrimitiveType

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

JSONDecodable is the protocol, mapping JSON to your customize struct.


Operators

Operator Decode element
<|? T?
<| T
<|| [T]