JSONKit使用示例

    

导入JSONKIT和dylib


将json转换为NSDictionary


    NSString *string =@"{\"name\": \"My Name\",\"list\": [\"one\",\"two\",\"three\"]}";

    

    NSData* jsonData = [stringdataUsingEncoding:NSUTF8StringEncoding];

    

   NSDictionary *resultsDictionary = [jsonDataobjectFromJSONData];

    

   NSLog(@"55----%@",resultsDictionary);

    


将NSDictionary转换为 json格式的string
//resultsDictionary是需要转换的dictionary

NSString *string = [[NSString alloc] initWithData:[resultsDictionary JSONData] encoding:NSUTF8StringEncoding];  









官方JSON用法


    

    NSError *error = nil;

    NSDictionary *dict_1 = [NSJSONSerializationJSONObjectWithData:request.responseDataoptions:kNilOptionserror:&error];

    if (!dict_1 && error) {

        NSLog(@"error-----------------------error");

        return;

    }else{

        NSLog(@"OK-------------OK---------");

    }

    NSLog(@"dict_11111111------------------%@",dict_1);


    NSString *str = [[NSStringalloc]initWithData:request.responseDataencoding:NSUTF8StringEncoding];

    NSLog(@"str-----------------%@",str);

    

关于NSJSONSerialization,官方文档中有如下介绍:

You use the NSJSONSerialization class to convert JSON to Foundation objects and convert Foundation objects to JSON.

An object that may be converted to JSON must have the following properties:

  • The top level object is an NSArray or NSDictionary.

  • All objects are instances of NSStringNSNumberNSArrayNSDictionary, or NSNull.

  • All dictionary keys are instances of NSString.

  • Numbers are not NaN or infinity.

我们能利用 NSJSONSerialization将JSON转换成Foundation对象,也能将Foundation对象转换成JSON,转换成JSON的对象必须具有如下属性:

  • 顶层对象必须是NSArray或者NSDictionary
  • 所有的对象必须是NSString、NSNumber、NSArray、NSDictionary、NSNull的实例
  • 所有NSDictionary的key必须是NSString类型
  • 数字对象不能是非数值或无穷

接下来看看如何使用,首先是如何生成JSON格式的数据:
我这里选用项目中的代码片段来进行简要介绍,以下显示了登陆请求JSON格式数据的生成
[cpp]  view plain copy
  1. NSDictionary *registerDic = [NSDictionary dictionaryWithObjectsAndKeys:uuid,@"_id",userName,@"login_name",password,@"password", nil];  
  2.     if ([NSJSONSerialization isValidJSONObject:registerDic]) {  
  3.         NSError *error;  
  4.         NSData *registerData = [NSJSONSerialization dataWithJSONObject:registerDic
  5.  options:NSJSONWritingPrettyPrinted error:&error];  
  6.         NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:registerData encoding:NSUTF8StringEncoding]);  
  7.     }  

NSDictionary中的key就是json字符串中的key,object就是json字符串中的value,isValidJSONObject:方法是检测Foundation对象能否合法转换为JSON对象, dataWithJSONObject:options:error方法是将Foundation对象转换为JSON对象,参数 NSJSONWritingPrettyPrinted的意思是将生成的json数据格式化输出,这样可读性高,不设置则输出的json字符串就是一整行。

解析服务端返回的json格式数据:
[cpp]  view plain copy
  1. NSDictionary *resultJSON = [NSJSONSerialization JSONObjectWithData:resultData 
  2. options:kNilOptions error:&error];  

获取返回字符串中key为status的value:
[cpp]  view plain copy
  1. NSString *status = [resultJSON objectForKey:@"status"];  

    
#import <Foundation/Foundation.h>
#define URL @"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79"
 
int main ( int argc , const char * argv [ ] )
{
 
     @ autoreleasepool {
        
         ///网络请求的数据json解析成字典形式
         NSData *data = [ NSData dataWithContentsOfURL : [ NSURL URLWithString :URL ] ] ;
         NSDictionary *dic = [ NSJSONSerialization JSONObjectWithData :data options :NSJSONReadingAllowFragments error :nil ] ;
         NSLog ( @"dic=%@" , dic ) ;
        
         ///将foundation对象转换成json数据  判断这个对象是否能转换成json数据
         if ( [ NSJSONSerialization isValidJSONObject :dic ] ) {
             NSError *error ;
             NSData *jsondata = [ NSJSONSerialization dataWithJSONObject :dic options :NSJSONWritingPrettyPrinted error : & error ] ;
             NSString *str = [ [ NSString alloc ] initWithData :jsondata encoding :NSUTF8StringEncoding ] ;
             NSLog ( @"jsondata=%@" , str ) ;
             [ str release ] ;
         }
        
     }
     return 0 ;
}




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值