JSONKit使用示例

前端之家收集整理的这篇文章主要介绍了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=[[NSStringalloc]initWithData:[resultsDictionaryJSONData]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 theNSJSONSerializationclass 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 anNSArrayorNSDictionary.

  • All objects are instances ofNSString,NSNumber,102)">NSArray,102)">NSDictionary,orNSNull.

  • All dictionary keys are instances ofNSString.

  • Numbers are not NaN or infinity.

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

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

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

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

解析服务端返回的json格式数据:
copy
    NSDictionary*resultJSON=[NSJSONSerializationJSONObjectWithData:resultData
  1. options:kNilOptionserror:&error];

获取返回字符串中key为status的value:
copy
    NSString*status=[resultJSONobjectForKey:@"status"];

#import <Foundation/Foundation.h>
#define URL @"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79"
int main ( argc , const char * argv [ ] )
{
@ autoreleasepool {
///网络请求的数据json解析成字典形式
NSData *data = [ NSData dataWithContentsOfURL : NSURL URLWithString :URL ;
NSDictionary *dic NSJSONSerialization JSONObjectWithData :data options :NSJSONReadingAllowFragments error :nil ;
NSLog ( @"dic=%@" Crayon-sy" style="font-family:inherit; display:inline-block; zoom:1; font-size:inherit!important; line-height:inherit!important; height:inherit!important; color:rgb(220, dic ) ;
///将foundation对象转换成json数据判断这个对象是否能转换成json数据
if ( isValidJSONObject :dic ) {
NSError *error ;
*jsondata dataWithJSONObject :dic :NSJSONWritingPrettyPrinted error : & error ;
NSString *str alloc ] initWithData :jsondata encoding :NSUTF8StringEncoding ;
( @"jsondata=%@" str ;
[ str release ;
}
}
return 0 ;
}
原文链接:https://www.f2er.com/json/290556.html

猜你在找的Json相关文章