ios中JSON的解析

发现了一个ios学习的好网站,http://www.raywenderlich.com,很多很好的教程。这篇是用其中的一篇解析JSON的文章改编而来。

知识点:

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 %@\n",[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



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值