NSData 转NSDictionary 出错之 NSJSONSerialization 抛出异常 - “Garbage at End” 解决方案

144 
作者   奸人坚  


garbage.png
garbage.png

在使用NSJSONSerialization API转换NSData([JSONStr dataUsingEncdoing:NSUTF8ENCODING]),通常只要JSONStr 字符串格式正确,我们就可以轻松转换格式,NSString to NSDictionary.
如果不确定自己的JSON字符串是否正确,可以尝试google "json在线解析器"

常在河边走,哪有不湿鞋

笔者就遇到个蛋疼的问题:在转JSON, 抛出了"Garbage at End"错误,中文意思大概是“末尾有垃圾”,意思是含有JSON转换无法识别的字符。(JSON格式验证是没问题的)
经过笔者一阵折腾(stackoverflow),最终还是找到了解决方案,原因是 因为我的字符串是加密过的,导致解密后的数据加了一些 “操作符”
http://baike.baidu.com/view/1112575.htm
ACSII编码中有个32个操作符

解决方案:
1.如果是data,先将DATA装成String,采用NSUTF8StringEncoding(系统提供的枚举貌似都可以,因为不是中文),然后看第二步
2.如果是NSString
yourStr =[yourStr stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];
这时候所有控制符都会被替换成空字符。
接着将yourStr转化成NSData(注意跟你第一步你所用的编码格式需要相同),然后再进行NSJSONSerialization 操作!

--EOF--
若无特别说明,本站文章均为原创,转载请保留链接,谢谢

转自:http://www.jianshu.com/p/c94ec3b2e1d8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值