ios-JSON的序列化和反序列化

JSON的序列化

字典或者数组转换成二进制的JSON形式的字符串

一般准备给服务器发送数据的时候做这个操作,然后服务器再进行反序列化就能得到你上传的信息了

把一个OC对象转化成二进制数据发送给服务器,用下面的方式传过去的OC对象必须是字典或者数组,数组或者字典里面存储的对象必须是NSString或者NSNumber或NSArray或NSDictionary或者是NSNull,字典中的key必须是NSString。NSNumber不能不是一个数字,数字不能是无穷大

 NSData * data=[NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

JSON的反序列化

二进制形式的JSON字符串转换成OC中的字典或者数组

一般是从服务器接收到数据的时候做这个操作

从服务器读到二进制数据转换为OC对象

id json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];  

在上传文件的时候,有的时候我们可能会出希望去传递一些附加的信息给服务器,这个时候我们就可以在上传文件的时候同时的再发生POST请求去上传这些附加的信息

就比如说上传照片的时候给图片添加作者,名称,描述和地理位置等

还有就是发微博的时候上传图片,还要去附加微博内容,作者和地理位置。

这个时候我们就要用到JSON的序列化了。

自定义对象不能进行序列化,必须要把自定义的对象转换成字典或者数组

所以我们应该这么做,后面写的是对象中的属性,然后会根据对象属性对应的值给字典中对应的key赋值

 NSDictionary *dic = [v dictionaryWithValuesForKeys:@[@"size",@"author"]];

//判断一个对象能不能进行json序列化
    if(![NSJSONSerialization isValidJSONObject:v])
    {
        
    }
我们用KVC可以给对象内部私有的成员变量进行赋值

如果我们想把多个对象的信息一次性上传到服务器,我们可以用数组去存储字典,然后字典中存储着对象的key和value。

你可能感兴趣的:(ios-开发)