Skip to content

ludaye123/CaesarParser

 
 

Repository files navigation

CaesarParser

Build Status

CaesarParser is a framework written in Swift for you to parse Model from JSON or to JSON.

Features

  • JSON deserialization, parse JSON to Model
  • JSON serialization, parse Model to JSON
  • Support nested class, stand along, in arrays or in dictionaries
  • Custom converter during parsing
  • Support struct, primitive type, raw representable enum

Requirements

Cocoa Touch Framework requires iOS 8 or later.

Manual add CaesarParser to your project requires iOS 7 or later.

Installation

###Carthage

Add the following line to your Cartfile.

github "lancy/CaesarParser"

Then do carthage update. After that, add the framework to your project.

###Cocoapods

Add the following line in your Podfile.

pod "CaesarParser", :git => 'https://github.com/lancy/CaesarParser.git'

Basic Usages

Any type that confirm Deserializable or Convertible protocol can be parse. Besides you can use custom value converter during parsing.

/// Use for Class, Nested Type
public protocol Deserializable {
    init(json: JSONDictionary)
}

/// Use for Primitive Type
public protocol Convertible {
    static func convert(json: JSONObject) -> Self?
}

Any type that confirm Serializable can be parse to JSON.

/// convert to JSON object
public protocol Serializable {
    func toJSONObject() -> JSONObject
}

Build-in Support

  • Int
  • String
  • Double
  • Float
  • Bool
  • NSURL
  • NSDate (unix_timestamp to NSDate, can be custom by build-in DateFormatConverter)
  • NSURL (string to URL)
  • Raw representable enums which raw value confirm to Convertible
  • Array<Convertible or Deserializable>
  • Dictionary<Convertible and Hashable, Convertible or Deserializable>

Demo Code

enum Gender: Int {
	case Unknown = 0
	case Male = 1
	case Female = 2
}

class Person: Deserializable, Serializable {
    var name: String
    var age: Int
    var birthday: Double
    var weight: Float
    var adult: Bool = false
    var gender: Gender = .Unknown
    var girlFriend: Person?
    var friends = [Person]()
    var luckyNumbers = [Int]()
    var favouredSingers = [String: Person]()
    var vips = [Int: Person]()
    var preferNumbers = [Int: Int]()
    var orientation = [Gender]()

    init(json: JSONDictionary) {
        name <-- json["name"]
        age <-- json["age"]
        birthday <-- json["birthday"]
        weight <-- json["weight"]
        adult <-- json["adult"]
        gender <-- json["gender"]
        girlFriend <-- json["girlFriend"]
        friends <-- json["friends"]
        luckyNumbers <-- json["luckyNumbers"]
        favouredSingers <-- json["favouredSingers"]
        vips <-- json["vips"]
        preferNumbers <-- json["preferNumbers"]
        orientation <-- json["orientation"]
    }

    func toJSONObject() -> JSONObject {
        var json = JSONDictionary()

        name --> json["name"]
        age --> json["age"]
        birthday --> json["birthday"]
        weight --> json["weight"]
        adult --> json["adult"]
        gender --> json["gender"]
        girlFriend --> json["girlFriend"]
        friends --> json["friends"]
        luckyNumbers --> json["luckyNumbers"]
        favouredSingers --> json["favouredSingers"]
        vips --> json["vips"]
        preferNumbers --> json["preferNumbers"]
        orientation --> json["orientation"]

        return json
    }
}

Acknowledgements

  • JSONHelper CaesarParser is inspired by JSONHelper a lot, thanks for their great work.

License

CaesarParser is available under the MIT license.

About

Simple JSON Model Parser written in Swift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 98.6%
  • Objective-C 1.4%