ios json

(1)建立字典,向字典中写入键值对。再将字典转换为JSON数据型(NSDATA)。创建文件夹并将nsdata内容写入文件。
目的做数据持久化或者网络传输。

NSDictionary *array = [NSMutableArray dictionaryWithDictionary:@{
    @“A”:@“1”,@“B”:@“2”,@“c”:55

         }]
NSArray *myArray = @[@"aaa",@"bbbb"];
[array setValue :myArray forKey:@"children"];
NSError *error = nil;
NSData *jsondata = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error];
if([jsonData length]>0 && error == nil)
{
 NSLog(@"successful serialized the dictionary");
}  else if([jsonData length] == 0 && error == nil)
{
 NSlog(@"no data return");
}else if(error != nil)
{
 NSLog(@"An error happend = %@",error);
}

//可以打印出来
NSString *str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
 NSLog(@"json string is %@",str);

(2)布尔值为dictionary值得时候

(一)如果将Ture和false作为字典值如何传入
bool value1 = true;
bool value2 = false;
dic[@"set1"] = @(value1);
dic[@"set2"] = @(value2);


(二)处理字典,将字典转成字符串

1.转成NSData

NSData  *data = [  NSJSONSerialization  dataWithJSONObject  :tempDict  options  :  NSJSONWritingPrettyPrinted  error  :  NULL ];            

2.将data转成字符串

NSString  *jsonStr = [[  NSString  alloc  ]  initWithData  :data  encoding  :  NSUTF8StringEncoding ];          

这样就完成需求。

当时,当我们下次需要从服务器获取这段字符串的时候,就需要将字符串转成字典了,步骤如下

1.将字符串转成data

NSData  *data = [str  dataUsingEncoding  :  NSUTF8StringEncoding ];    

2.将data转成字典

NSDictionary  *jsonDic = [  NSJSONSerialization  JSONObjectWithData  :data  options  :  0  error  :  NULL ];            

3.处理数据,将字典中得bool值赋值给字典(为了保持一致性,还是生成false和true,方便下次再传给服务器)

bool  bool_true =  true ;   
dict[  @"setting"  ] =  @(  bool_true  ) ;     
bool  bool_false =  false ;  
dict[  @"setting"  ] =  @(  bool_false  ) ;


(3)反序列化jsondata转化为dictionary或array
error = nil;
id jsonObject = [NSJSONSeriallzation JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments
error &error];

if(jsonObject != nil&& error == nil)
{
NSLog(@“success”);
}
if([jsonObject isKindOfClass:[NSDictionary class]])
{
 NSDictionary* deserialize = (NSDictionary*)jsonObject;
 NSLog(@"deserial");
}else if([jsonObject isKindOfClass:[NSArray class]])
{
 NSArray *deserial = (NSArray*)jsonObject;
 NSLog(@"deserial");
}else
{
 NSLog(@"other");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值