SwiftJSONParser
Parse JSON like a badass
Install / Use
/learn @mrap/SwiftJSONParserREADME
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.
-
Clone a local copy of SwiftJSONParser in any directory you'd like.
git clone git@github.com:mrap/SwiftJSONParser.git -
Drag
SwiftJSONParser.xcodeprojinto your project's project navigator -
Add SwiftJSONParser as a Target Dependency.
- Go to your App Target > Build Phases
- In Target Dependencies, press
+, selectSwiftJSONParser
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
