iOS JSON數(shù)據(jù)NSLog小技巧

一.前言

說(shuō)到JSON數(shù)據(jù)NSLog輸出,大家可能并不陌生,在向服務(wù)器數(shù)據(jù)請(qǐng)求時(shí),會(huì)經(jīng)常用到,但Xcode的JSON輸出并不怎么美麗,

  • 1.字段""缺失
  • 2.數(shù)組輸出為( )
  • 3.unicode編碼中文沒(méi)有自動(dòng)顯示為中文
  • 4.大部分情況下copy打印的JSON數(shù)據(jù)到JSON在線格式化工具,都報(bào)錯(cuò),格式化不了
  •  5.其實(shí)有些第三方插件也可以解決這個(gè)問(wèn)題,現(xiàn)在給大家分享一個(gè)比較簡(jiǎn)單的解決方法,幾行代碼的擴(kuò)展就可以解決這個(gè)問(wèn)題.
    

二.先看效果

1.Xocde JSON數(shù)據(jù)正常NSLog輸出,和copy到JOSN在線格式化工具情況如下:

image

2.添加擴(kuò)展后.NSLog輸出和JSON數(shù)據(jù)格式化效果如下

image

3.效果很明顯了:

  • 1.自動(dòng)補(bǔ)全字段缺失""
  • 2.自動(dòng)轉(zhuǎn)換數(shù)組( )為[ ]
  • 3.自動(dòng)轉(zhuǎn)換unicode編碼為中文
  • 4.能正常進(jìn)行JSON數(shù)據(jù)格式化
  •  5.自動(dòng)轉(zhuǎn)換,NSLog不用添加任何更改.
    

三.好了,不多說(shuō),直接上代碼

1.新建一個(gè)NSdictionasy 的Category,筆者取名為NSDictionary+XHLogHelper,如下:
image

image
2.打開(kāi) NSDictionary+XHLogHelper.m 文件,添加代碼如下:
#import "NSDictionary+XHLogHelper.h"

@implementation NSDictionary (XHLogHelper)

#if DEBUG
- (NSString *)descriptionWithLocale:(nullable id)locale{

  NSString *logString;

    @try {

        logString=[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:nil] encoding:NSUTF8StringEncoding];

    } @catch (NSException *exception) {

        NSString *reason = [NSString stringWithFormat:@"reason:%@",exception.reason];
        logString = [NSString stringWithFormat:@"轉(zhuǎn)換失敗:\n%@,\n轉(zhuǎn)換終止,輸出如下:\n%@",reason,self.description];
   
 } @finally {
 
    }
        return logString;
}
#endif

@end

3.大功告成了
  • 上面代碼作用是,DEBUG模式下,NSLog輸出字典時(shí),轉(zhuǎn)換為JSON字符串的形式輸出,轉(zhuǎn)換失敗,按原始數(shù)據(jù)輸出,- (NSString *)descriptionWithLocale:(nullable id)locale方法我就不解釋了,有興趣同學(xué)可百度了解下.
  • 此方法轉(zhuǎn)JSON字典不會(huì)出現(xiàn)失敗情況,什么情況下會(huì)轉(zhuǎn)換失敗按原始數(shù)據(jù)輸出呢(比如自定義字典鍵值對(duì)中有NSData,NSDate等類型數(shù)據(jù))
  • 現(xiàn)在你可以在工程任何一個(gè)地方NSLog JSON數(shù)據(jù),輸出是不是已經(jīng)轉(zhuǎn)換為標(biāo)準(zhǔn)JSON格式了.
4.Tips
  • 項(xiàng)目開(kāi)發(fā)中大家可以自定義一個(gè)只在DEBUG模式下才打印DebugLog,所有調(diào)試輸出都用這個(gè)打印,可以減少在應(yīng)用打包上線后,后臺(tái)打印造成的性能浪費(fèi),代碼如下:
#ifdef DEBUG
#define DebugLog(...) NSLog(__VA_ARGS__)
#else
#define DebugLog(...)
#endif

四.小結(jié):

  • 1.此方法很適合NSLog JSON數(shù)據(jù),因?yàn)榭梢灾苯釉诰€格式化,看復(fù)雜JSON數(shù)據(jù)很方便
  • 2.上面代碼已上傳到了Github,有需要同學(xué)可以直接下載,添加到項(xiàng)目中.Github代碼地址:https://github.com/CoderZhuXH/XHLogHelper
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,361評(píng)論 4 61
  • 今天晨會(huì)完畢相約與孩子一起跑步,美麗的跑步就這樣開(kāi)始了,先做拉伸,然后一起去跑,剛開(kāi)始孩子跟不上我,我放慢...
    祁紅蓮閱讀 567評(píng)論 0 0
  • 一.時(shí)間周期 2016年10月19日---2016年10月25日 二.互評(píng)分組 A組:象彌,水木聽(tīng)風(fēng),失落的羊,哆...
    失落的羊閱讀 352評(píng)論 2 0
  • 每一次作業(yè)雨的臨近,都能讓我感受到來(lái)自內(nèi)心的掙扎和吶喊,為什么要跳進(jìn)這個(gè)坑里,還是一個(gè)為期七年的“大坑”! 作為笑...
    自信的風(fēng)閱讀 489評(píng)論 0 0

友情鏈接更多精彩內(nèi)容