美文网首页
iOS中参数为数组时的POST请求

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

作者: LDYG14 | 来源:发表于2017-10-23 18:16 被阅读122次

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

    相关文章

      网友评论

          本文标题:iOS中参数为数组时的POST请求

          本文链接:https://www.haomeiwen.com/subject/vjiauxtx.html