iosにおけるJSONの解析
ios学習の良いサイトを見つけましたhttp://www.raywenderlich.comああ、いいチュートリアルがたくさんあります.この文章はその中の1篇の解析JSONの文章で改編されたものです.
知識点:
1.サイトjsonデータへのアクセス.
2.jsonデータの解析.
3.jsonデータの生成.
4.jsonとobjectを統合します.
jsonファイル:
一、ウェブサイトjsonデータのアクセス.
定義マクロ:
二、jsonデータの解析
図:
三、jsonデータの生成
四、jsonとobjectの統合
知識点:
1.サイトjsonデータへのアクセス.
2.jsonデータの解析.
3.jsonデータの生成.
4.jsonとobjectを統合します.
jsonファイル:
{
"employees": [
{ "firstName":" " , "lastName":" " },
{ "firstName":" " , "lastName":" " },
{ "firstName":" " , "lastName":" " }
]
}
一、ウェブサイトjsonデータのアクセス.
定義マクロ:
#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)//1
#define kURL [NSURL URLWithString:@"http://localhost/employ.json"] //2
- (void)viewDidLoad
{
[super viewDidLoad];
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:kURL];// url
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];// fetchedData
});
}
二、jsonデータの解析
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData //1
options:NSJSONReadingAllowFragments
error:&error];
NSArray* employees = [json objectForKey:@"employees"]; //2
NSLog(@"employees: %@", employees); //3
jsonText.text = [NSString stringWithFormat:@"employees:%@",employees];
NSMutableString *str = [NSMutableString stringWithCapacity:40];
for (NSDictionary *employee in employees) {
NSLog(@"employee's first name is %@,last name is %@",[employee objectForKey:@"firstName"],[employee objectForKey:@"lastName"]);
[str appendString:[NSString stringWithFormat:@"employee's first name is %@,last name is %@
",[employee objectForKey:@"firstName"],[employee objectForKey:@"lastName"]]];
NSLog(@"%@",str);
}
humanReadableText.text = str;
}
図:
三、jsonデータの生成
- (IBAction)toJSON:(id)sender {
NSDictionary* postData = [NSDictionary dictionaryWithObjectsAndKeys:@" ",@"firstName",@" ", @"lastName", nil];
NSDictionary* postData1 =[NSDictionary dictionaryWithObjectsAndKeys:@" ", @"firstName", @" ", @"lastName", nil];
NSArray *array = [NSArray arrayWithObjects:postData, postData1, nil];
NSLog(@"%@",[NSString stringWithFormat:@"%@",array]);
humanReadableText.text = [NSString stringWithFormat:@"%@",array];
[self performSelectorOnMainThread:@selector(generateJSON:) withObject:array waitUntilDone:YES];
}
- (void)generateJSON:(NSArray *)postDict {
//parse out the json data
NSError* error;
NSData *postData = [NSJSONSerialization dataWithJSONObject:postDict options:NSJSONWritingPrettyPrinted error:&error];
jsonText.text = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];
}
図:四、jsonとobjectの統合
@interface NSDictionary(JSONCategories)
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:
(NSString*)urlAddress;
-(NSData*)toJSON;
@end
@implementation NSDictionary(JSONCategories)
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:
(NSString*)urlAddress
{
NSData* data = [NSData dataWithContentsOfURL:
[NSURL URLWithString: urlAddress] ];
__autoreleasing NSError* error = nil;
id result = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions error:&error];
if (error != nil) return nil;
return result;
}
-(NSData*)toJSON
{
NSError* error = nil;
id result = [NSJSONSerialization dataWithJSONObject:self
options:kNilOptions error:&error];
if (error != nil) return nil;
return result;
}
@end