开发中需要处理大量 json 数据,有时候后台开发人员修改了服务器,没有及时更新文档.
我们需要根据后台给的真实数据来处理业务.
数据量小的时候还好,但是数据量大的话 就需要图形工具来查看结构.
xCode的NSLog输出的数据不能直接 在工具上转换。
这个分类就是解决这个问题而来的!
废话不多说!
直接上代码
创建一个 NSObject 的分类 分别在.h .m文件申明 实现这个方法 调用 就OK
-(void)fb_descriptionJson:(NSDictionary *)dicM callBack:(void(^)(NSString * logMessage))callBack
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *logString;
@try {
logString=[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:dicM options:NSJSONWritingPrettyPrinted error:nil] encoding:NSUTF8StringEncoding];
callBack ? callBack(logString) : nil;
} @catch (NSException *exception) {
NSString *reason = [NSString stringWithFormat:@"reason:%@",exception.reason];
logString = [NSString stringWithFormat:@"转换失败:\n%@,\n转换终止,输出如下:\n%@",reason,self.description];
} @finally {
}
});
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
NSDictionary *dict = @{@"title":@"标题",@"content":@"测试",@"arr":@{@"title":@"标题",@"content":@"测试打印"}};
[self fb_descriptionJson:dict callBack:^(NSString * _Nullable logMessage) {
NSLog(@"%@",logMessage);
}];
}
输出结果
{
"title" : "标题",
"content" : "测试",
"arr" : {
"title" : "标题",
"content" : "测试打印"
}
}
参考文章如下:iOS-打印 JSON 数据原格式
具体代码可以查看我的一个 oc语法糖库 FBObjcSugar
NSObject+FBLogJsonSugar.h 文件