一.前言
說(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