NSDictionary或NSArray與JSON字符串相互轉換


在iOS 5 中,蘋果引入了一個解析JSON串的NSJSONSerialization類。
通過該類,我們可以完成JSON數據與NSDictionary和NSArray之間的轉化。

以前,我記得我用的是第三方的插件。但是,蘋果出了這套解析后,效率也大大了超過了,所有的解析第三方類庫。所以,推薦使用NSJSONSerialization類來完成轉化。

一、將NSDictionary或NSArray轉化為JSON串

// 將字典或者數組轉化為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; } }

使用這個方法的返回,我們就可以得到想要的JSON串

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

二、將JSON串轉化為NSDictionary或NSArray

將NSString轉化為NSData

[jsonString dataUsingEncoding:NSASCIIStringEncoding];
// 將JSON串轉化為字典或者數組 - (id)toArrayOrNSDictionary:(NSData *)jsonData{ NSError *error = nil; id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error]; if (jsonObject != nil && error == nil){ return jsonObject; }else{ // 解析錯誤 return nil; } }

三、將JSON串與NSArray和NSDictionary的操作進行封裝

當然,也有很多時候,我們將這些操作,分別定義在NSObject和NSString的一個分類中

直接貼:

1.將NSString轉化為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轉化為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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM