json解包與json封包

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

1.NSDatahtml

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

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數據)的封包方法。post

而後,用一張圖試着說明兩件事。其一是,利用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 }

輸出日誌:測試

封包操做後產生的文件:atom

 

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

相關文章
相關標籤/搜索