因为Swift对于类型有非常严格的控制,它在处理JSON时是挺麻烦的,因为它天生就是隐式类型。SwiftyJSON是一个能帮助我们在Swift中使用JSON的开源类库。开始之前,让我们先看一下在Swift中处理JSON是多么痛苦。

下载地址:https://github.com/lingoer/SwiftyJSON

下面将解析http://api.smemo.info/test.php/Index/jsonTest?type=3这个JSON数据。

//SwiftyJson
        
        //获取json
        var apiData:NSData!=NSData(contentsOfURL: NSURL(string: "http://api.smemo.info/test.php/Index/jsonTest?type=3")!, options: NSDataReadingOptions.DataReadingUncached, error: nil)
        //make json object
        var result=NSString(data: apiData, encoding: NSUTF8StringEncoding)
        var error:NSError?
        
        println(result)

//生成json字段
        
        let json=JSON(data: apiData, options: NSJSONReadingOptions.allZeros, error: &error);
        //解析字段
        if let language=json["language"].stringValue{
            println("lanauage:\(language)")
        }
        if let title=json["user"]["title"].stringValue{
            println("user title:\(title)")
        }
        if let url=json["user"]["url"].stringValue{
            println("user url:\(url)")
        }
        //解析数组
        if let dataArray = json["data"].arrayValue{
            println(dataArray.description)
            //遍历数组
            for item in dataArray{
                println(item.description)
                //解析数组内的字段
                if let type=item["name"].stringValue{
                    println("type:\(type)")
                }
                if let type=item["form"].stringValue{
                    println("form:\(type)")
                }
                if let type=item["type"].stringValue{
                    println("type:\(type)")
                }
            }
        }
        //解析字段以及下面的数组
        if let extra = json["extra"]["type"].stringValue{
            println("extra type:\(extra)")
        }
        //解析字段内的数组
        if let dataArray = json["extra"]["data"].arrayValue{
            println(dataArray.description)
            //遍历数组
            for item in dataArray{
                println(item.description)
                //解析数组内的字段
                if let type=item["name"].stringValue{
                    println("extra type:\(type)")
                }
                if let type=item["form"].stringValue{
                    println("extra form:\(type)")
                }
                if let type=item["type"].stringValue{
                    println("extra type:\(type)")
                }
            }
        }

使用SwiftyJSON解析JSON相关推荐

  1. 25.SwiftyJSON转换JSON的注意

    在Swift当中, 如果我们需要解析JSON数据的话, 我们需要用上一堆代码才能解析, 而且解析之后还不一定可以正常运行, 这里提供一个第三方的SwiftyJSON, 可以防止我们在解析JSON数据的 ...

  2. ios5中apple增加了解析JSON的api——NSJSONSerialization。

    ios5中apple增加了解析JSON的api--NSJSONSerialization.网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON.TouchJSON.YA ...

  3. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

  4. json java typeof_java解析json

    1:下载另外一个Java的小包就可以了: http://www.JSON.org/java/json_simple.zip 里面有源码和文档例题和编程的lib包:编程只需要json_simple.ja ...

  5. 在C语言中解析json配置文件

    业务需求 在C或者C++项目中常常需要解析配置文件,我们常见的配置文件格式一般就是.ini,xml,lua或者是一般的text文件,这些格式比较恼人的一个问题就是数据格式过于冗余,或者功能不够强大,不 ...

  6. winform解析json

    在使用C#开发爬虫程序时,会遇到需要解析json字符串的情况.对于json字符串可以使用正则表达式的形式进行解析,更为方便的方法是使用Newtonsoft.Json来实现. Nuget添加应用包 在工 ...

  7. spark- PySparkSQL之PySpark解析Json集合数据

    PySparkSQL之PySpark解析Json集合数据 数据样本 12341234123412342|asefr-3423|[{"name":"spark", ...

  8. 在.NET2.0中解析Json和Xml

    在.NET2.0中解析Json和Xml 在.NET解析json有很多方法,这里介绍最简单也用的最多的一种. 一.添加引用 解析Json,先下载开源控件 Newtonsoft.Json.dll 下载地址 ...

  9. json解析:[1]gson解析json

    客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象.但是用jsonObject和jsonArray解析相对麻烦.利用Gson和阿里的fas ...

最新文章

  1. 12款优秀的 JavaScript 日历和时间选择控件
  2. 关于并发数与在线数的概念
  3. android 圆形边框填充颜色,如何在android中表示多种颜色的圆形边框
  4. moba寻路_MOBA代号105:道具收费 加入自动寻路等MMO元素
  5. 用python做时间序列预测一:初识概念
  6. 如何用 Excel 制作二维码
  7. Java面试宝典2018
  8. Emmagee 2.5 在MUMU模拟器上启动后直接失败,换成夜神模拟器可以正常使用
  9. 数据结构队列顺序循环队列、加入、删除、取头元素
  10. openSUSE:下载帮助
  11. 蘑菇街 App 的组件化之路·续
  12. WinINet 与 WinHTTP简介
  13. 用友财务帐套升级:T3升级U8
  14. python派森编程软件_派森Python官方下载_派森Python最新版_派森Python官方版-华军软件园...
  15. scons与Madagascar!
  16. 固定资产管理条码系统是什么
  17. ❀工信工实验参考——《模电课设人体感应LED灯》
  18. 大厂与小厂招人的区别,看完多少有点不敢相信
  19. 五 、Kotlin学习之命名参数默认参数
  20. Linux目录配置与FHS标准

热门文章

  1. MVC.Net: 解决Attempted to access an unloaded appdomain的问题
  2. 性能测试结果分析结果
  3. 在CMD中输入adb命令,提示“‘adb‘ 不是内部或外部命令,也不是可运行程序或批处理文件”的解决方法
  4. Android Handler消息机制不完全解析
  5. 正确使用pageX、pageY、offsetLeft、offsetTop
  6. 统计分析__卡方分布
  7. Python-flask 使用Markdown和Flask-PageDown支持富文本文章
  8. 网页底部版权信息如何注明?
  9. keil调试stm32MCU的时候没有黄色箭头的一个处理办法
  10. Keras中Conv1D和Conv2D的区别