NSJSONSerialization-JSON數(shù)據(jù)與NSDictionary和NSArray之間的轉(zhuǎn)化

在iOS 5 中亚茬,蘋果引入了一個(gè)解析JSON串的NSJSONSerialization類。
通過(guò)該類浓恳,我們可以完成JSON數(shù)據(jù)與NSDictionary和NSArray之間的轉(zhuǎn)化刹缝。

以前葡兑,我記得我用的是第三方的插件。但是赞草,蘋果出了這套解析后,效率也大大了超過(guò)了吆鹤,所有的解析第三方類庫(kù)厨疙。所以,推薦使用NSJSONSerialization類來(lái)完成轉(zhuǎn)化疑务。

一沾凄、將NSDictionary或NSArray轉(zhuǎn)化為JSON串

// 將字典或者數(shù)組轉(zhuǎn)化為JSON串

  • (NSData *)toJSONData:(id)theData{

    NSError *error = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData
    options:NSJSONWritingPrettyPrinted
    error:&error];

    if ([jsonData length] > 0 && error == nil){
    return jsonData;
    }else{
    return nil;
    }
    }

使用這個(gè)方法的返回,我們就可以得到想要的JSON串
NSString *jsonString = [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];

二知允、將JSON串轉(zhuǎn)化為NSDictionary或NSArray

將NSString轉(zhuǎn)化為NSData
[jsonString dataUsingEncoding:NSASCIIStringEncoding];

// 將JSON串轉(zhuǎn)化為字典或者數(shù)組

  • (id)toArrayOrNSDictionary:(NSData *)jsonData{
    NSError *error = nil;
    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData
    options:NSJSONReadingAllowFragments
    error:&error];

    if (jsonObject != nil && error == nil){
    return jsonObject;
    }else{
    // 解析錯(cuò)誤
    return nil;
    }

}

三撒蟀、將JSON串與NSArray和NSDictionary的操作進(jìn)行封裝

當(dāng)然,也有很多時(shí)候温鸽,我們將這些操作保屯,分別定義在NSObject和NSString的一個(gè)分類中

直接貼:

1.將NSString轉(zhuǎn)化為NSArray或者NSDictionary

import "NSString+JSONCategories.h"

@implementation NSString(JSONCategories)

-(id)JSONValue;
{
NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];
__autoreleasing NSError* error = nil;
id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (error != nil) return nil;
return result;
}
@end

2.將NSArray或者NSDictionary轉(zhuǎn)化為NSString

import "NSObject+JSONCategories.h"

@implementation NSObject (JSONCategories)

-(NSData)JSONString;
{
NSError
error = nil;
id result = [NSJSONSerialization dataWithJSONObject:self
options:kNilOptions error:&error];
if (error != nil) return nil;
return result;
}
@end

希望對(duì)你有所幫助!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涤垫,一起剝皮案震驚了整個(gè)濱河市姑尺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝠猬,老刑警劉巖切蟋,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異榆芦,居然都是意外死亡柄粹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門匆绣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)驻右,“玉大人,你說(shuō)我怎么就攤上這事犬绒⊥耄” “怎么了?”我有些...
    開封第一講書人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵凯力,是天一觀的道長(zhǎng)茵瘾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)咐鹤,這世上最難降的妖魔是什么拗秘? 我笑而不...
    開封第一講書人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮祈惶,結(jié)果婚禮上雕旨,老公的妹妹穿的比我還像新娘扮匠。我一直安慰自己,他們只是感情好凡涩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開白布棒搜。 她就那樣靜靜地躺著,像睡著了一般活箕。 火紅的嫁衣襯著肌膚如雪力麸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,043評(píng)論 1 291
  • 那天育韩,我揣著相機(jī)與錄音克蚂,去河邊找鬼。 笑死筋讨,一個(gè)胖子當(dāng)著我的面吹牛埃叭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悉罕,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼赤屋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛮粮?” 一聲冷哼從身側(cè)響起益缎,我...
    開封第一講書人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎然想,沒想到半個(gè)月后莺奔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡变泄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年令哟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妨蛹。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屏富,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛙卤,到底是詐尸還是另有隱情狠半,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布颤难,位于F島的核電站神年,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏行嗤。R本人自食惡果不足惜已日,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栅屏。 院中可真熱鬧飘千,春花似錦堂鲜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至霉旗,卻和暖如春酌予,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奖慌。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留松靡,地道東北人简僧。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像雕欺,于是被迫代替她去往敵國(guó)和親岛马。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容