TypeJSON 0.0.3

TypeJSON 0.0.3

测试已测试
语言语言 Obj-CObjective C
许可协议 MIT
发布最新发布2015年2月

Michael Reiss维护。



TypeJSON 0.0.3

  • 作者:
  • Michael Reiss

一个简单的 JSON 解析库,旨在遵循 JSON 规范并提供一些类型安全性。

目标

  • 保持与 JSON 结构和限制的接触。它相当简单。
  • 利用类型系统帮助避免错误,而无需付出太多努力。
  • 允许您在对象和数组中索引而无需在每个步骤中进行类型检查。

使用

解析一些 JSON

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

使用子脚本表示法和类型转换访问值

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;

当数据形状不符合假设时处理错误

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)

当数据类型事先不知情时执行显式类型检查

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

将值序列化回 JSON 数据

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

从头创建 JSON

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

灵感

许可协议

标准 MIT 许可协议。请享受。