通过nsurlsession向服务器传送json数据
2015-12-26 20:19
676 查看
近几天真是被json搞死了 终于知道该怎么用json向服务器传输json了 直接贴代码吧
读取的时候用的是jsonobjectwithdata 后面的readingoption有三种 常用的是allowframts 好像顶层不是array或者dictionary都可以变成数组等 具体以后再补!
NSJSONReadingMutableContainers:返回可变容器,NSMutableDictionary或NSMutableArray
http://stackoverflow.com/questions/19345864/nsjsonreadingmutableleaves-option-is-not-working
NSJSONReadingMutableLeaves:返回的JSON对象中字符串的值为NSMutableString,目前在iOS
7上测试不好用,应该是个bug,
http://stackoverflow.com/questions/19345864/nsjsonreadingmutableleaves-option-is-not-working
NSJSONReadingAllowFragments:允许JSON字符串最外层既不是NSArray也不是NSDictionary,但必须是有效的JSON
Fragment。例如使用这个选项可以解析 @“123” 这样的字符串。
http://stackoverflow.com/questions/16961025/nsjsonserialization-nsjsonreadingallowfragments-reading
//多样性的request let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:4567/login")!) let session = NSURLSession.sharedSession() let params = ["uername":"jameson","password":"cao"] //默认是get request.HTTPMethod = "POST" //核心 将字典或者数组转化成为json do {request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted) } catch{ print("error") } //这里还不造啥意思 request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in var strData = String(data: data!, encoding: NSUTF8StringEncoding) post(params, url: "http", postCompleted: { (succeed, msg) -> () in }) } //用闭包作为参数 还是第一次用 func post(params:Dictionary<String,String>,url:String,postCompleted:(succeed:Bool,msg:String) -> ()) { let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:4567/login")!) let session = NSURLSession.sharedSession() let params = ["uername":"jameson","password":"cao"] //默认是get request.HTTPMethod = "POST" do {request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted) } catch{ print("error") } request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in var strData = String(data: data!, encoding: NSUTF8StringEncoding) do {var jsondata = try NSJSONSerialization.JSONObjectWithData(data! , options: .AllowFragments) as! NSDictionary } catch{ print("error") } }NSJSONSerialOption是解析或者创建json时候用到的 datawithobject是创建json 后面的option采用的是writing 的.prettyprinted采用的是格式化输出json
读取的时候用的是jsonobjectwithdata 后面的readingoption有三种 常用的是allowframts 好像顶层不是array或者dictionary都可以变成数组等 具体以后再补!
NSJSONReadingMutableContainers:返回可变容器,NSMutableDictionary或NSMutableArray
http://stackoverflow.com/questions/19345864/nsjsonreadingmutableleaves-option-is-not-working
NSJSONReadingMutableLeaves:返回的JSON对象中字符串的值为NSMutableString,目前在iOS
7上测试不好用,应该是个bug,
http://stackoverflow.com/questions/19345864/nsjsonreadingmutableleaves-option-is-not-working
NSJSONReadingAllowFragments:允许JSON字符串最外层既不是NSArray也不是NSDictionary,但必须是有效的JSON
Fragment。例如使用这个选项可以解析 @“123” 这样的字符串。
http://stackoverflow.com/questions/16961025/nsjsonserialization-nsjsonreadingallowfragments-reading
相关文章推荐
- 解析JSON格式数据
- HTML5-javascript屏幕旋转事件:onorientationchange
- jsp+servlet实现验证码
- maven中添加json-lib的jar包
- javascript--iframe的JS方法,用法!contentWindow 、parent、top、onload
- JavaScript详解<一>
- 前端模块化实践----使用webpack打包js代码
- 4)Javascript设计模式:Decorator模式
- 3)Javascript设计模式:Observer模式
- Sublime Text3安装js插件
- EL表达式与JSTL(C)标签
- JSP专题
- JSP标准标签库
- 2)Javascript设计模式:Singleton模式
- Javascript构造函数
- 1)Javascript设计模式:Module模式
- JavaScript
- JSON数据转换方法 parse()和stringify()
- JS面向对象的程序设计
- 使用iframe标签,子窗体与父窗体之间相互调用js函数