Popularity
1.6
Stable
Activity
0.0
Stable
50
6
7

Code Quality Rank: L5
Programming language: Swift
License: MIT License
Tags: Data Management     JSON    
Latest version: v1.0.0

SwiftJSONParser alternatives and similar libraries

Based on the "JSON" category.
Alternatively, view SwiftJSONParser alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SwiftJSONParser or a related project?

Add another 'JSON' Library

README

Parse JSON like a badass

Full disclaimer regarding performance

For production apps (or if you care about efficiency at all), I highly recommend using SwiftyJSON over this library. After benchmarking, I found that SwiftJSONParser could be up to 7x slower than SwiftyJSON.

This sucks

let jsonData = NSData(contentsOfURL: NSURL(string: url))
var jsonErrorOptional: NSError?
let jsonOptional: AnyObject! = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions(0), error: &jsonErrorOptional)

if let json = jsonOptional as? Dictionary<String, AnyObject> {
    if let other = json["other"] as? Dictionary<String, AnyObject> {
        if let nicknames = other["nicknames"] as? Array<String> {
            if let handle = nicknames[0] as AnyObject? as? String {
                println("Some folks call me \(handle)")
            }
        }
    }
}

This is readable

let jsonData = NSData(contentsOfURL: NSURL(string: url))
let parser = JSONParser(jsonData)

if let handle = parser.getString("other.nicknames[0]") {
    println("Some folks call me \(handle)")
}

Usage

Sample JSON payload we want to parse

{
    "name": "Mike",
    "favorite_number": 19,
    "gpa": 2.6,
    "favorite_things": ["Github", 42, 98.6],
    "other": {
        "city": "San Francisco",
        "commit_count": 9000,
        "nicknames": ["mrap", "Mikee"]
    }
}

Get values of a specific type. Returns optionals

if let name = parser.getString("name") {
    println("My name is \(name)")
}

if let number = parser.getInt("favorite_number") {
    println("\(number) is my favorite number!")
}

if let gpa = parser.getDouble("gpa") {
    println("My stellar highschool gpa was \(gpa)")
}

Or get AnyObject if you're not sure

if let city = parser.get("other.city") {
    // city will be type AnyObject
}

Get an Array of values

if let favorites = parser.getArray("favorite_things") {
    // favorites => ["Github", 42, 98.6]
}

Error Handling

If you're not sure about incoming json data, check it first

let badJsonData = NSData(contentsOfURL: NSURL(string: url))
let parser = JSONParser(badJsonData)

// Check for an error
if parser.error != nil {
   // Do stuff with json
} else {
   // Handle the error
   println(parser.error)
}

Installation

The best way to use SwiftJSONParser is to import it as a framework.

  1. Clone a local copy of SwiftJSONParser in any directory you'd like. git clone [email protected]:mrap/SwiftJSONParser.git
  2. Drag SwiftJSONParser.xcodeproj into your project's project navigator

  3. Add SwiftJSONParser as a Target Dependency.

  4. Go to your App Target > Build Phases

  5. In Target Dependencies, press +, select SwiftJSONParser