TypeJSON 0.0.3

TypeJSON 0.0.3

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Feb 2015

Maintained by Mickey Reiss.


Downloads

Total60
Week0
Month0

Installs

Apps18
powered by Segment

GitHub

Stars8
Watchers1
Forks3
Issues0
Contributors2
Pull Requests0

Code

Files2
LOCLines of Code 158


TypeJSON 0.0.3

  • By
  • Mickey Reiss

A simple JSON parsing library that aims to adhere to the JSON spec with a sprinkle of type safety.

Goals

  • Keep in touch with the structure and limitations of JSON. It's pretty simple.
  • Take advantage of the type-system to help avoid bugs without adding too much effort.
  • Allow you to index into objects and arrays without performing type-checks at each step.

Usage

Parse some JSON

NSData *profileData = [@"{ \"name\": \"Mickey Mouse\", \"details\": { \"age\": 102, \"species\": \"mouse\" }, \"animated\": true, \"friends\": [\"Minnie\", \"Goofy\", \"Donald\"] }" dataUsingEncoding:NSUTF8StringEncoding];
JSON *profileJSON = [JSON fromData:data];

Access values with subscript notation and type coersion

NSString *mickeysName = profileJSON["name"].asString;
BOOL isAnimated = profileJSON["animated"].isTrue;
NSInteger mickeysAge = profileJSON["details"]["age"].asNumber.integerValue;
NSString *mickeysSpecies = profileJSON["details"]["species"].asString;
NSString *mickeysFirstFriendsName = profileJSON["friends"][0].asString;

Handle errors when data shape does not meet assumptions

JSON *minniesNameJSON = profileJSON["friends"][0]["name"]; // => JSON
NSString *minniesName = minniesNameJSON.asString; // => nil
NSError *minniesNameError = minniesNameJSON.asError; // => NSError(domain: JSON, code: 422)
NSString *mickeysLocation = profileJSON["location"].asError; // => NSError(domain: JSON, code: 404)

Perform explicit type-checking when data type is not known in advance

profileJSON.isObject; // => YES
profileJSON["name"].isString // => YES
profileJSON["animated"].isString // => NO
profileJSON["animated"].isTrue // => YES

Serialize values back to JSON data

NSData *profileData = profileJSON.asJSON; // => { "name": "Mickey Mouse", "details": { "age": 102, "species": "mouse" }, "animated": true, "friends": ["Minnie", "Goofy", "Donald"] } as NSData
NSData *detailsData = profileJSON["details"].asJSON; // => { "age": 102, "species": "mouse" } as NSData

Create JSON from scratch

JSON *myJSON = [JSON emptyObject];
// TODO: Mutator methods

Inspiration

License

Standard MIT license. Enjoy.