以下是ios中三种不同解析方式:
jsonkit需要导入JSONKit.h、JSONKit.m文件,可在官网上下https://github.com/johnezang/JSONKit。
1、JSONKit解析方式:
- NSString *jsonString = @"[{\"age\":18,\"book\":{\"price\":23.2,\"title\":\"booooooook1\"},\"name\":\"samyou\"},{\"age\":22,\"book\":{\"price\":21,\"title\":\"booooooook2\"},\"name\":\"samsam\"}]";
- NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
- // NSDictionary *resultDic = [jsonData objectFromJSONData];
- NSArray *resultDic = [jsonData objectFromJSONData];
- NSString *nstr = [resultDic JSONString];//json字符串
- NSLog(@"str : %@",nstr);
- NSLog(@"age= %@", [resultDic valueForKey:@"age"]);
- NSLog(@"book= %@", [resultDic valueForKey:@"book"]);
- NSArray *books = [resultDic valueForKey:@"book"];
- NSLog(@"book.price===%@",[books valueForKey:@"price"]);
2、SBJSON解析方式(通过plist文件进行读取):
https://github.com/stig/json-framework可下载。
data.plist文件内容:[{"auctionId":1000,"auctionName":"苹果"},{"auctionId":1001,"auctionName":"李子"}]
- //json解析
- NSString *filePath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
- //获取字典
- NSDictionary *dataDict = [NSDictionary dictionaryWithContentsOfFile:filePath];
- //获取json key值
- NSString *jsonData = [dataDict objectForKey:@"auction"];
- if(jsonData == nil){
- NSLog(@"无数据!");
- }else{
- //得到jsoin数组
- NSArray *jsonArray = [jsonData JSONValue];
- NSLog(@"jsonArray:%@",jsonArray);
- //通过key获取对应的值
- //写法一
- NSString *auctionId = [jsonArray valueForKey:AUCTION_ID];
- NSLog(@"auctionId : %@",auctionId);
- //写法二
- // NSArray *auctionId = [jsonArray valueForKey:AUCTION_ID];
- // for(int i=0;i<[auctionId count];i++){
- // NSLog(@"auction : %@",[auctionId objectAtIndex:i]);
- // }
- //写法三(以下方法不行)
- // for(int i=0;i<[jsonArray count];i++){
- // Auction *auction = [jsonArray objectAtIndex:i];
- // NSLog(@"Auction.auctionName : %@",auction.auctionName);
- // }
- }
- [jsonData release];
3、ios5自带API进行json解析,NSJSONSerialization类
- NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
- [dictionary setValue:@"Anthony" forKey:@"name"];
- [dictionary setValue:[NSNumber numberWithUnsignedInteger:30] forKey:@"Age"];
- NSArray *arrayChildren = [[NSArray alloc] initWithObjects:@"A", @"B", nil];
- [dictionary setValue:arrayChildren forKey:@"children"];
- NSError *error = nil;
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
- NSLog(@"jsonData : %@",[jsonData description]);
- if (error) {
- NSLog(@"dic->%@",error);
- }
- id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];
- if (nil != jsonObject) {
- if ([jsonObject isKindOfClass:[NSDictionary class]]){
- NSDictionary *resultDic = (NSDictionary *)jsonObject;
- NSLog(@"Received JSON Dictionary : %@", resultDic);
- } else {
- NSLog(@"Error JSON data.");
- }
- }