iOS中參數為數組時的POST請求


https://www.jianshu.com/p/5548c80665c2

最近項目中出現給后台傳遞數組的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, 或掃描下方二維碼關注. 這里會分享我的讀書筆記, 願你我共同進步



作者:LDYG14
鏈接:https://www.jianshu.com/p/5548c80665c2
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM