最近项目中出现给后台传递数组的post请求, 结果发现OC中的数组传递过去后后台不能正确识别解析,不是正确的JSON格式. 瞬间凝固, 之前不都是这么传递OC对象的么? 对, 之前都是直接传递最简单的字典, 而非包含了数组对象, 所以后台那边可以正确接收.
解决办法:
将OC中的数组对象转化为JSON字符串传递给后台.
转换思路:
将某个对象先通过NSJSONSerialization转换成NSData对象,然后将这个NSData对象转换成字符串,这样得到的字符串就是JSON字符串。
OC项目中打印出来的数组格式:
项目中打印出来的数组格式.png将OC对象转化为字符串:
屏幕快照 2017-10-23 下午5.49.47.png转化之后的结果:
转化之后的结果.png上述这样的JSON字符串在这里还是不能满足我的需要,上面的这个JSON字符串中会有空格、换行符、反斜杠,这些特殊字符串都是我们不需要的(这个需要从后台那里拦截我们的请求,解析url后可以看到这些我们不需要的字符),因此我们还需要对JSON字符串中进行处理(去掉那些我们不需要的字符)
下面给出最终的解决方案:
最终解决方法.png该方法中主要就是添加了去除一些字符的方法。 注意:我们在去除字符串中的“\”反斜杠时,需要使用"\"。
最终打印的字符串:
[ {"index":0,"name":"OC0","id":"liangsen0"},{"index":1,"name":"OC1","id":"liangsen1"},{"index":2,"name":"OC2","id":"liangsen2"}]
我项目中在post请求前OC对象进行的转化
NSDictionary *dict = @{
@"userId": ZK_MyUID,
@"questions":questionArrays
};
// 转化为json格式
NSString *parameterstr = [NSString ObjectTojsonString:dict];
NSDictionary *parameters = @{
@"question":parameterstr
};
以此记录!
参考文章:
http://www.voidcn.com/article/p-kdtkzwpp-hh.html
欢迎指正!
毛姆说的,阅读能为自己筑起一个避难所,几乎可以避开生命中所有的灾难。
欢迎关注我的微信公众号:LDYG2017, 或扫描下方二维码关注. 这里会分享我的读书笔记, 愿你我共同进步.
初始化蒲公英.jpg
网友评论