json解包與json封包


首先,對兩個名詞進行簡單的說明:

1.NSData

用來存儲二進制的數據類型。NSData類提供了一種簡單的方式,它用來設置緩沖區、將文件的內容讀入緩沖區,或將緩沖區的內容寫到一個文件。不變緩沖區(NSData類),也可定義可變的緩沖區(NSMutableData類)。

2.json

作為一種輕量級的數據交換格式,正在逐步取代XML,成為網絡數據的通用格式。

小結:我們只需要明白NSData類型是用來存儲二進制數據的,json是一種數據格式,注意是格式。

接着,先用一段文字簡單描述一下json解包和json封包:

iOS5.0以后,蘋果SDK推出了自帶的json解決方案NSJSONSerialization,這是一個非常好用的json生成和解析工具,效率也是比其他第三方開源項目的高很多。NSJSONSerialization提供了json數據封包、Json數據解包。NSJSONSerialization提供了將json數據轉換為NSDictionary或NSArray的解包方法,也提供了將NSDictionary、NSArray對象轉換為json數據(可以通過調用isValidJSONObject來判斷NSDictionary、NSArray對象是否可以轉換為json數據)的封包方法。

然后,用一張圖試着說明兩件事。其一是,利用NSJSONSerialization將一個json文件解包成數組或者字典。其二是,利用NSJSONSerialization將數組或者字典封包成一個json文件。

 

最后還是上代碼與效果圖:

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     
 4     NSLog(@"*******開始封包********");
 5     [self fengbao];
 6     NSLog(@"*******開始解包********");
 7     [self jiebao];
 8 }
 9 
10 - (void)jiebao
11 {
12     NSString *filePath = @"/Users/Hers/Desktop/UIimageView簡單測試/UIimageView簡單測試/jsonDate.json";
13     NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
14     NSError *error;
15     NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error:&error];
16     NSLog(@"%@",jsonDict);
17 }
18 
19 - (void)fengbao
20 {
21     NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
22     // isValidJSONObject判斷對象是否可以構建成json對象
23     if ([NSJSONSerialization isValidJSONObject:dic]){
24         NSError *error;
25         // 創造一個json從Data, NSJSONWritingPrettyPrinted指定的JSON數據產的空白,使輸出更具可讀性。
26         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
27         NSLog(@"jsonData:%@",jsonData);
28         
29         NSString *jsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
30         NSLog(@"jsonStr:%@",jsonStr);
31         
32         BOOL result = [jsonData writeToFile:@"/Users/Hers/Desktop/UIimageView簡單測試/UIimageView簡單測試/jsonDate.json" atomically:YES];
33         NSLog(@"result:%d",result);
34     }
35 }

輸出日志:

封包操作后產生的文件:

 

【極力推薦】2018年中秋節兩天的良心寫作,全面講解UITextField,總有你不知道的知識:UITextField的使用、介紹、講解、全解、簡介、說明


免責聲明!

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



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