[iOS5]JSONファイルの読み込み

2011/11/29

以前は JSON ライブラリを利用してましたが、iOS5 から JSON が標準対応になりました。 JSONテキストファイルを読み込んで、オブジェクト化するのにたった4行と素晴らしい。 (ファイル存在チェックはしてませんが・・・)

リソースの test.txt(JSON) を読み込むサンプル

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"]; 
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
NSData *data =[fileHandle readDataToEndOfFile];
NSArray *results = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog("%@", results);

NSJSONSerialization の API は以下の通り、非常に少ないのでシンプルです。

NSJSONSerialization のヘッダファイル

#import 

@class NSError, NSOutputStream, NSInputStream, NSData;
enum {
    NSJSONReadingMutableContainers = (1UL << 0),
    NSJSONReadingMutableLeaves = (1UL << 1),
    NSJSONReadingAllowFragments = (1UL << 2)
};
typedef NSUInteger NSJSONReadingOptions;

enum {
    NSJSONWritingPrettyPrinted = (1UL << 0)
};
typedef NSUInteger NSJSONWritingOptions;

NS_CLASS_AVAILABLE(10_7, 5_0)
@interface NSJSONSerialization : NSObject {
@private
    void *reserved[6];
}

+ (BOOL)isValidJSONObject:(id)obj;
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
+ (NSInteger)writeJSONObject:(id)obj toStream:(NSOutputStream *)stream options:(NSJSONWritingOptions)opt error:(NSError **)error;
+ (id)JSONObjectWithStream:(NSInputStream *)stream options:(NSJSONReadingOptions)opt error:(NSError **)error;

@end

参考サイト

詳細や実用は、以下のサイトが参考になるかもです。 NSJSONSerialization Class Reference Working with JSON in iOS 5 Tutorial