iOS 中 JSON 資料交換格式,iosjson
JSON (JavaScript Object Notation)是一種輕量級的資料交換格式。JSON 的具體教程,可以參見 JSON 中國:http://www.json.org.cn/index.htm ,當然還有 JSON 線上校正格式化工具:http://www.bejson.com/ ,希望深入學習 JSON 可以參考其他教程。JSON 的輕量級是相對於 XML 文檔結構而言的,描述項目字元少,所以描述相同的資料所需的字元個數要少,當然傳輸的速度就會提高而流量也會減少。
像微博,對於微博服務端資料很多就是 JSON ,需要對這些請求回來的資料進行本地解析;因為 Web 和移動平台開發對流量要求要儘可能的少,對速度要求又要比較快,所以 JSON 就成為理想的資料交換語言。
把資料寫成 JSON 結構過程稱為“編碼”過程,即是寫入過程。把資料從 JSON 文檔中讀取處理的過程稱為“解碼”過程,即是解析和讀取過程。
下面列舉一些 JSON 常用的解析架構:
(1)SBJson
(2)TouchJSON
(3)YAJL ,基於SBJson,裡面進行了最佳化,底層 API 使用 C 編寫,上層 API 是 objective-c 編寫,使用者可以有多不同的選擇。它不支援 ARC ,源碼:http://lloyd.github.com/yajl/
(4)JSONKit
(5)NextiveJson ,此架構不支援 ARC ,源碼:http://github.com/nextive/NextiveJson
(6)NSJSONSerialization ,從這個架構的命名規則來看,想你也猜到了它是蘋果自家的 JSON 解析架構,它是 iOS5 之後提出來的。
具體的簡單一實例也是可以參考這篇部落格:http://blog.csdn.net/enuola/article/details/7903632/ 有些方法在 iOS7 以後的版本中會有警告,把它修改為 iOS7 以後支援的方法便可。
下面來實現一個利用 NSJSONSerialization 來進行解析的簡單實現,當然也是可以用第三方架構,下載源碼,安裝,如果不支援 ARC 配置便可。直接在 viewDidLoad 方法中進行解析
- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. self.navigationItem.leftBarButtonItem = self.editButtonItem; self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadView:) name:@"reloadViewNotification" object:nil]; NotesNextiveJsonParser *parser = [NotesNextiveJsonParser new]; //開始解析 [parser start]; NSString* path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"json"]; //解析一個叫 Test.json 的檔案 NSData *jsonData = [[NSData alloc] initWithContentsOfFile:path]; NSError *error; id jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; if (!jsonObj || error) { NSLog(@"JSON解碼失敗"); } self.listData = [jsonObj objectForKey:@"Record"]; }
如有不對,還望指點!
JSON資料格式是這樣的:
JSON是一種輕量級資料交換格式。json簡單說就是js中的對象和數組,所以這兩種結構就是對象和數組2種結構,你用的資料格式就是對象和數組的複合結構。
你的樣本JSON資料是名/值對,其中只有一個"wegInstLt"的變數名,值是包含一個條目的數組。假設var info={"wegInstLt":[{"billTypeCode":"0","channelId":530,"channelKind":"03","isHaveBillDate":"0","isHavePayAmount":"0","isLeePay":"0","isPrePay":"1","wiliCode":"1238","wiliItem":"00","wiliName":"哈爾濱市自來水公司","wltiId":10345}]}; 要獲得"哈爾濱市自來水公司"可以這樣寫:
info.wegInstLt[0].wiliName
希望可以幫到你,祝你生活愉快!
JSON是幹什用的?輕量級的資料交換格式?
摘自百度百科
JSON建構有兩種結構:
json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組2種結構,通過這兩種結構可以表示各種複雜的結構
1、對象:對象在js中表示為“{}”擴起來的內容,資料結構為
{key:value,key:value,...}的索引值對的結構,在物件導向的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理
解,取值方法為 對象.key 擷取屬性值,這個屬性值的類型可以是 數字、字串、數組、對象幾種。
2、數組:數組在js中是中括弧“[]”擴起來的內容,資料結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引擷取,欄位值的類型可以是 數字、字串、數組、對象幾種。
經過對象、數組2種結構就可以組合成複雜的資料結構了。