MRJSONSafe 0.0.1

MRJSONSafe 0.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

未申请维护。



  • Michael Efimov 和 Roman Busyghin

JSON Safe

一组对Foundation对象进行分类的集合,简化了您在解析JSON对象时的工作。

为什么?

使用JSON的典型工作流程如下所示

NSError *error      = nil;
NSData  *JSONData   = [self populateJSONData];
id       JSONObject = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:&error];
Class expectedClass = [NSDictionary class];

if ([JSONObject isKindOfClass:expectedClass]) {
    [self processJSONDictionary:(NSDictionary *)JSONObject];
}

您看?所有的代码都散布着-isKindOfClass:。这防止了当JSON数据稍微变化时程序崩溃。然而,在一个以JSON为主的程序中,这些类型转换操作会产生大量的无谓的噪音,您无法流畅地阅读代码。

这就是为什么创建了JSON Safe。您可以安全地处理您的JSON

// produces NSDictionary or nil if there was no NSDictionary parsed
NSDictionary *JSONDict = [JSONObject mr_toDictionary];

示例用法

以下任意JSON对象的转换都受到支持

  • 到NSString
  • 到NSNumber
  • 到NSArray
  • 到指定类的item的NSArray
  • 到NSDictionary

NSNull始终转换为nil,无论您尝试得到什么:NSStringNSNumberNSArray还是NSDictionary

尝试将NSNumber转换为NSNumber将产生相同的对象。转换为NSString — 调用-[NSNumber stringValue]。转换为NSArray — 产生包含接收者的NSArray。转换为NSDictionarynil

使用NSString也会有类似的情况

  • NSStringNSString给出相同的对象
  • NSNumber使用带有小数分隔符设置为.NSNumberFormatter
  • NSArray产生@[ self ]
  • NSDictionary返回nil

NSArrayNSDictionary相关的操作有点棘手。以下是NSArray的转换规则

  • NSArrayNSString给出数组的concatenated\n\content\nof\nthe\narray
  • 转换为NSNumber结果是nil
  • NSArray产生self
  • NSDictionarynil

最后是NSDictionary

  • 尝试将其转换为非集合对象将导致nil
  • NSArray产生@[ self ]
  • NSDictionaryself

该项目使用一系列类似文档的测试进行测试。请检查tests/目录。

安装

将以下行添加到您的Podfile

pod 'MRJSONSafe'

然后运行pod install

或者如果您不使用CocoaPods,可以直接将src/MRJSONSafe.hsrc/MSJSONSafe.m复制到您的项目中。

作者

原始想法是由Michael Efimov在为iPhone的Yandex.Search应用工作时开发的。目前该项目由Roman Busyghin维护。

贡献力量

想要做出改变吗?克隆仓库,编写代码、测试和文档后提交拉取请求。

许可证

MRJSONSafe采用MIT许可证。更多信息请参阅LICENSE文件。