iOS中参数为数组时的POST请求

2017-10-23  本文已影响122人  LDYG14

最近项目中出现给后台传递数组的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
上一篇 下一篇

猜你喜欢

热点阅读