我想解析NSString中的json数据我该怎么做
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"%@",data);
NSArray *tempArray =[[DataController staticVersion] startParsing:data];
for (int i = 0; i<[tempArray count]; i++) {
id *item = [tempArray objectAtIndex:i];
NSDictionary *dict = (NSDictionary *) item;
SearchCode *theObject =[[SearchCode alloc] init];
[theObject setCodeValue:[dict objectForKey:@"CodeValue"]];
[theObject setCodeDescription:[dict objectForKey:@"CodeAddedDate"]];
[theObject setCodeAddedDate:[dict objectForKey:@"CodeAddedDate"]];
[theObject setCodeID:[dict objectForKey:@"CodeID"]];
[theObject setUpdateDateTime:[dict objectForKey:@"UpdateDateTime"]];
[cptArray addObject:theObject];
[theObject release];
theObject=nil;
}
DataController类
@interface DataController : NSObject {
}
+ (id)staticVersion;
- (NSMutableArray *) startParsing:(NSString *)theURLString;
@end
#import "DataController.h"
#import "JSON.h"
@implementation DataController
DataController *theInstance;
+(id)staticVersion
{
if(!theInstance){
theInstance = [[DataController alloc] init];
}
return theInstance;
}
- (NSMutableArray *) startParsing:(NSString *)theURLString {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",theURLString]];
NSString *fileContent= [NSString stringWithContentsOfURL:url];
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *data = (NSDictionary *) [parser objectWithString:fileContent error:nil];
NSArray *items = (NSArray *) data ;
return items;
}
@end
答案 0 :(得分:1)
This Post包含解析JSON,XML等的类。我一直在使用它们。
答案 1 :(得分:1)
在新的sdk中,您不必使用外部类来解析您的JSon,您可以使用NSJSONSerialization在iOS 5.0及更高版本中可用。
要使用此类解析json String,您需要将NSString转换为NSData,您可以使用:
NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];
之后,您可以使用该方法将数据转换为json:
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
你的返回类型将取决于,因为它将像你的json,如果你的json是一个数组,它将是一个数组,如果是一个字典,它将是一个字典,依此类推。 来自苹果文档:
可以转换为JSON的对象必须具有以下内容 属性:
顶级对象是NSArray或NSDictionary。所有对象都是 NSString,NSNumber,NSArray,NSDictionary或NSNull的实例。所有 字典键是NSString的实例。数字不是NaN或 无穷大。
希望对你有所帮助。