1

我想解析 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;

       }

数据控制器类

@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
4

2 回答 2

1

在新的 sdk 中,您不必使用外部类来解析您的 JSon,您可以使用NSJSONSerialization女巫在 iOS 5.0 及更高版本中可用。

要使用此类解析 json 字符串,您需要将 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 或无穷大。

希望对您有所帮助。

于 2012-04-04T10:52:11.947 回答
1

这篇文章包含解析 JSON、XML 等的类。我一直在使用这些。

于 2012-04-04T08:24:43.673 回答