iOS-打印 JSON 数据原格式

作者: 一位不愿透露姓名的王先生_ | 来源:发表于2016-12-15 22:05 被阅读5446次

痛点

实际开发过程中,从网络上拿到的数据,再控制台打印输出时,格式是以下形式的:

{
    error = {
        errorCode = 10002;
        errorMessage = "Appkey is missing. (\U65e0appkey\U53c2\U6570)";
    };
    status = ERROR;
}

存在着以下几点问题

  • 双引号" "缺失
  • unicode编码没有显示中文
  • 当有数组情况时候,数组的中括号[ ]--->变成可恶的圆括号了( )

解决办法

  • 写一个NSDictionaryCategory
  • 分类里重写方法- (NSString *)descriptionWithLocale:(id)locale
- (NSString *)descriptionWithLocale:(id)locale {

    NSString *string;
    
    @try {
        
        string = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:nil] encoding:NSUTF8StringEncoding];
        
    } @catch (NSException *exception) {
        
        NSString *reason = [NSString stringWithFormat:@"reason:%@",exception.reason];
        string = [NSString stringWithFormat:@"转换失败:\n%@,\n转换终止,输出如下:\n%@",reason,self.description];
        
    } @finally {
        
    }
    
    return string;
}
  • 返回数据打印样式
{
    "status" : "ERROR",
    "error" : {
        "errorMessage" : "Appkey is missing. (无appkey参数)",
        "errorCode" : 10002
    }
}
  • 解析结果

使用方法

HQLogHelper导入到你的项目中,然后直接运行即可。


Demo

GitHubHQLogHelper


参考:

相关文章

网友评论

  • 李盛民:嗯,估计使用上会方便很多,但是你想没有想过,你这个为什么使用NSDic的扩展,而不是NSString的扩展呢~个人认为方法名称需要更佳斟酌,而且id这个东西最好不要出现了好吧~真的令人十分困惑!
    李盛民:直觉上觉得不应该使用Dic的扩展,因为毕竟属于string.init的范畴的东西,所以应该使用sting的扩展,而传参的修饰类型为id,那你想没有想过,如果我穿入个Data,或者其他类型的参数这个函数还能很好的工作么?我觉得解决这个就算是优化了。
    一位不愿透露姓名的王先生_:那您有没有优化的方法?我愿请教下!
  • FR_Zhang:直接用json格式化工具就好
    FR_Zhang:@亦庄_吴彦祖 打印出来的本来就是展示的 既然如此 专业的json解析软件或者插件会更好 当然 这个不能说是不好的 只是实用性不大
    一位不愿透露姓名的王先生_:@FR_Zhang 可是Xcode控制台打印输出的不是json原始格式啊?
  • 吾名唐宋:没什么用
    一位不愿透露姓名的王先生_:@卧槽这个昵称666 什么意思?不好用吗?还是你不习惯用这个???
  • 壹点微尘:学习了
    一位不愿透露姓名的王先生_:@壹点微尘 共同进步 :stuck_out_tongue_closed_eyes:

本文标题:iOS-打印 JSON 数据原格式

本文链接:https://www.haomeiwen.com/subject/stigmttx.html