歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iPhone開發之Json數據的解析

iPhone開發之Json數據的解析

日期:2017/3/1 10:18:39   编辑:Linux編程

網絡中數據的傳輸往往是以Json或XML格式進行的,如新浪微博、騰訊微博、人人網等。今天主要介紹一下ios下Json數據的解析。

首先是使用TouchJson進行解析:

TouchJson點擊下載

首先導入

將Source文件加下的所以文件導入工程,在合適的位置添加CJSONDeserializer.h頭文件

代碼:

  1. NSString *jsonStr = <p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>;
  2. NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
  3. NSError *error;
  4. NSMutableDictionary *root = [[CJSONDeserializer deserializer] deserialize:jsonData error:&error];
  5. NSLog(@"Customers:%@", root);
  6. NSMutableArray *customers = [root objectForKey:@"customer"];
  7. NSString *jsonTextStr = @"姓名:\n";
  8. for (NSMutableDictionary *customer in customers) {
  9. NSString *name = [customer objectForKey:@"name"];
  10. name = [name stringByAppendingString:@"\n"];
  11. jsonTextStr = [jsonTextStr stringByAppendingString:name];
  12. NSLog(@"customer:%@",[customer objectForKey:@"name"]);
  13. }
輸出結果:
  1. Customers:{
  2. customer = (
  3. {
  4. name = roamer;
  5. sumcount = "322.3";
  6. ycount = "232.4";
  7. },
  8. {
  9. name = "\U738b\U4e09";
  10. sumcount = "1123.2";
  11. ycount = "221.2";
  12. },
  13. {
  14. name = "\U674e\U56db";
  15. sumcount = "12123.2";
  16. ycount = "1221.2";
  17. }
  18. );
  19. }
  20. 2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:roamer
  21. 2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:王三
  22. 2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:李四

下面使用SBJson

SBJson下載
首先導入

將Classes文件加下的所以文件導入工程,在合適的位置添加SBJson.h頭文件

代碼:

  1. //解析數據
  2. SBJsonParser *parser = [[SBJsonParser alloc] init];
  3. NSString *jsonStr = <p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>
  4. NSError *error = nil;
  5. NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:jsonStr error:&error]];
  6. //轉換代碼 不然會帶來中文問題,諸如加()、:變成 = 等亂碼問題
  7. SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];
  8. NSString *jsonString = [jsonWrite stringWithObject:root];
  9. NSLog(@"JsonString:%@", jsonString);
  10. [jsonWrite release];
  11. NSMutableArray *customers = [root objectForKey:@"customer"];
  12. NSLog(@"Customers:%@", customers);
  13. for (NSMutableDictionary *customer in customers) {
  14. NSLog(@"Customer-name:%@", [customer objectForKey:@"name"]);
  15. }
  16. [self.jsonData setText:@"解析完成"];
  17. [self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];

使用TouchJson和SBJson都可以快速的完成Json數據的解析,兩者使用起來都比較簡單,但TouchJson性能更好一些推薦使用。

Copyright © Linux教程網 All Rights Reserved