Objective-C IOS JSON序列化,以及NSdata、NSString、NSDictionay之间的转换

//NSString转NSData
NSData *aData = [str dataUsingEncoding: NSUTF8StringEncoding];

//NSData转为字符串NSString
[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]

//字典序列化转NSData
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];

//NSData转为反序列化Json字符串:常用接收返回信息NSData的转换 NSData为json形式字符串才可以
NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]

/**
options: 解析出来可能是数组或者字典
NSJSONReadingMutableContainers = (1UL << 0), 容器可变 一般使用这个

NSJSONReadingMutableLeaves = (1UL << 1),

NSJSONReadingFragmentsAllowed = (1UL << 2),// 允许不是json形式的字符串,一般请求返回只有一个字符串,一般不使用这个
*/

//序列化: 把对象转换为json形式的字符串
//反序列化: 把json形式的字符串转化成OC对象

//一、拼接NSDictionary转化为序列化Json字符串转为NSData
NSDictionary *json = @{@”username”:@”18513884422″,@”pwd”:@”1″,@”captchaValue”:@”1223″,@”ee”:@”111212″};
NSData *data= [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil]

//二、字符串拼接json串转化为序列化Json字符串转为NSData
NSString *jsonStr=@”{\”name\”:\”张三\”,\”age\”:\”12\”}”;
NSData *data= [jsonStr dataUsingEncoding:NSUTF8StringEncoding];

//三、数组转化为序列化Json字符串转为NSData
NSArray *array=@[
@{@”username”:@”18513884422″,@”pwd”:@(13)},
@{@”username”:@”18513884462″,@”pwd”:@(14)},
];
NSData *data=[NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

//四、 对象序列化
Person *p1=[[Personalloc]init];

//KVC 赋值
[p1 setValue:@”张三”forKey:@”name”];
[p1 setValue:@ (13) forKey:@”age”];

//判断对象是否能进行json序列化
[NSJSONSerializationisValidJSONObject:p1];

//对象转化为data
NSData *data= [NSJSONSerializationdataWithJSONObject:p1 options:0error:NULL];

//把自定义对象转化为字典,加入数组中转化为NSData 传入需要序列化的参数
NSDictionary *dictP=[p1 dictionaryWithValuesForKeys:@[@”name”,@”age”]];
NSMutableArray *mArray=[NSMutableArrayarray];
[mArray addObject:dictP];
NSData *data=[NSJSONSerialization dataWithJSONObject:mArray options:0 error:NULL];

//json文件转为data数据写入文件
[data writeToFile:@”Users/Apple/Desktop/1111.json” atomically:YES];
//读取文件返回NSdata数据
[NSData dataWithContentsOfFile:@”Users/Apple/Desktop/1111.json”];

 

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部