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;

       }

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
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 に答える