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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值