swift JSON字符串解析 json parse / json decode
2016-02-27 15:06
477 查看
这里讲解的是json字符串解析.寻常解析用三方库即可.但是有时,解析出来的数据并不是你想要的. 例如返回的数据为一个数组,但是却用json字符串包装的.那么你用原生的或三方库解析出来的数据为一个字符串类型:
[ "http://www.example.com/uploads/7186d834f55e9bd95754b12ebe6df911.jpg", "http://www.example.com/uploads/8bd827dae398640c198f991fe7a877bb.jpg" ]
这里用Swift代码.及解析出来的类型为String类型,本来想用的是数组,但是String缺无法转化为Array类型,我试过去掉两边中括号,并用 “逗号” 分割开.但是没有成功. 这时就需要进一步把解析出的Stirng再解析成数组
//例如的数据,用一个常量imageJSONStr来接收的 let imageJSONStr = "[ "http://www.zhuluoxi.com/uploads/7186d834f55e9bd95754b12ebe6df911.jpg", "http://www.zhuluoxi.com/uploads/8bd827dae398640c198f991fe7a877bb.jpg" ]" let images = Array<String>() //用来接收解析完成的数组 //字符串编码成json数据 let data:NSData = imageJsonStr.dataUsingEncoding(NSUTF8StringEncoding)! var img: AnyObject? do{ //解析json类型数组 try img = NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) }catch let error as NSError{ print("error: \(error)") } images = img as! Array<String>
ok,搞定,images 就是你想要的最终的数组
再来个终极版的,用extension解决,一劳永逸,使用时,一句代码搞定:
extension String { var parseJSONString: AnyObject? { var any: AnyObject? let data = self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) do{ any = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) }catch let error as NSError{ print("error: \(error)") } return any } }
使用时这样:
let imageJSONStr = "[ "http://www.zhuluoxi.com/uploads/7186d834f55e9bd95754b12ebe6df911.jpg", "http://www.zhuluoxi.com/uploads/8bd827dae398640c198f991fe7a877bb.jpg" ]" let images: Array<String> = imageJSONStr.parseJSONString as! Array<String>
搞定.一句代码解决.而别别人也可以使用这个方法了.
最后有个小问题,对于上面extension中的do catch 方法中,不能直接return,哪位高手可以指点小弟一下怎么做,不用 “any” 这个临时变量,直接在do括号中返回
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- C#中Convert.ToInt32()和int.Parse()的区别介绍
- Parse正式发布开源PHP SDK
- url decode problem 解决方法
- 探讨:parse url解析URL,返回其组成部分
- asp对复杂json的解析一定要注意要点
- oracle中decode函数的使用方法
- Oracle DECODE函数语法使用介绍
- php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
- JS的encodeURI和java的URLDecoder.decode使用介绍
- date.parse在IE和FF中的区别
- JSON序列化与解析原生JS方法且IE6和chrome测试通过
- js中encode、decode的应用说明
- 转义字符(\)对JavaScript中JSON.parse的影响概述
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- php5.2以下版本无json_decode函数的解决方法