(1)建立字典,向字典中写入键值对。再将字典转换为JSON数据型(NSDATA)。创建文件夹并将nsdata内容写入文件。
目的做数据持久化或者网络传输。
目的做数据持久化或者网络传输。
NSDictionary *array = [NSMutableArray dictionaryWithDictionary:@{
@“A”:@“1”,@“B”:@“2”,@“c”:55
@“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);
}
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);
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);
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 ) ;
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");
}
{
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");
}