• SwiftJson的使用


    项目中为什么需要导入SwiftyJSON呢?我一个个解析不可以吗?当然可以,以下会有一个对比

        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            getRequestData(url: "https://taoke.applinzi.com/taokelink.php?pid=mm_133573663_70000234_14094850291&itemid=8345635009", parame: [:])
        }
        /**
       这里是返回值的格式:
         {
         "ret": "SUCCESS",
         "msg": null,
         "clickUrl": "//s.click.taobao.com/t?e=m%3D2%26s%3DtrxmUiN46thw4vFB6t2Z2ueEDrYVVa64K7Vc7tFgwiHjf2vlNIV67pOBzQ4CGOHIUOZr0mLjuseGoasII9DMoPzZVtgLka0946q6FVfTMSCcLWG8AJtyin9RXAoUH1mA7v2fHg6o8i5FXZpdkpUelRstnv%2BTtgu5IYULNg46oBA%3D&union_lens=lensId:0b1dabb2_0e69_16ea6dd3958_6643",
         "shareUrl": "//uland.taobao.com/coupon/edetail?e=lDNI9o6sBHcR%2BxmP1xMF4b%2BYIXJmUhfDtvj0rTZLUUqnU%2FfLOrzsNxIuTyg8ob7bXvNVQjWcvSceg%2F%2FpBZRTqw0F6oz2SutXgBwRBZjG0mkz84bgvNVmYg%3D%3D"
         }
        */
    func getRequestData(url:String,parame:[String:String]){
            Alamofire.request(url, method: .get, parameters: parame, encoding: URLEncoding.queryString, headers: nil).responseJSON { (response) in
                if response.result.isSuccess{
                    print("成功了")
                    if let value1 = response.result.value as? [String: AnyObject]{
    //                    print("clickUrl : (value1["clickUrl"]!)")
                        if let msg = value1["msg"] as? String{
    //                        print("msg是有值的:(msg)")
                        }else{
    //                        print("msg是无值的")
                        }
                        
                    }
                }
            }
        }
    

    首先我们需要强转,在使用if进行可选绑定,很繁琐,这里只有一层,如果是多层,则更加繁琐,如果是用Json的话,就非常简单了,我们不需要考虑取值的饿时候不需要考虑该值是不是存在,做个对比吧,首先导入SwiftJson

    pod 'SwiftyJSON'
    

     解析:

             if response.result.isSuccess{
                    print("成功了")
                    let json:JSON = JSON(response.value!);
                    print("msg:(json["msg"].rawString())  clickUrl:(json["clickUrl"].rawString())")
                    /**
                       msg:null  clickUrl://s.click.taobao.com/t?e=m%3D2%26s%3DtrxmUiN46thw4vFB6t2Z2ueEDrYVVa64K7Vc7tFgwiHjf2vlNIV67pOBzQ4CGOHIUOZr0mLjuseGoasII9DMoPzZVtgLka0946q6FVfTMSCcLWG8AJtyin9RXAoUH1mA7v2fHg6o8i5FXZpdkpUelRstnv%2BTtgu5IYULNg46oBA%3D&union_lens=lensId:0b1dabb2_0e69_16ea6dd3958_6643
                    */
                    
                    
                }
    

    这里的输出值是

     成功了
     clickUrl : //s.click.taobao.com/t?e=m%3D2%26s%3DtrxmUiN46thw4vFB6t2Z2ueEDrYVVa64K7Vc7tFgwiHjf2vlNIV67pOBzQ4CGOHIUOZr0mLjuseGoasII9DMoPzZVtgLka0946q6FVfTMSCcLWG8AJtyin9RXAoUH1mA7v2fHg6o8i5FXZpdkpUelRstnv%2BTtgu5IYULNg46oBA%3D&union_lens=lensId:0b1dabb2_0e69_16ea6dd3958_6643
     msg是无值的
    

    所以项目中为了简单方便我们会使用SwiftJson来进行三方解析,以上很简单,以下会对SwiftJson进行复杂一点的解析,多层解析,以下是Demo

    这里是逐层解析

            let json = JSON([
                ["name":"Jack", "age": 25,"phones":[["name":"公司","number":"222222"],["name":"家庭","number":"777777"]]],
                ["name":"John", "age": 20,"phones":[["name":"公司","number":"111111"],["name":"家庭","number":"666666"]]]
            ])
           
            for (index,subJson):(String, JSON) in json {
                print("index:(index) name:(subJson["name"])  age:(subJson["age"])")
    
                for (subIndex,phonesJson):(String, JSON) in subJson["phones"] {
                    
                    print("subIndex:(subIndex) name:(phonesJson["name"])  number:(phonesJson["number"]) )")
                    
                }
            }
    

     输出

    index:0 name:Jack  age:25
    subIndex:0 name:公司  number:222222 )
    subIndex:1 name:家庭  number:777777 )
    index:1 name:John  age:20
    subIndex:0 name:公司  number:111111 )
    subIndex:1 name:家庭  number:666666 )
    

    也可以单个解析:

          var json = JSON([
                ["name":"Jack", "age": 25,"phones":[["name":"公司","number":"222222"],["name":"家庭","number":"777777"]]],
                ["name":"John", "age": 20,"phones":[["name":"公司","number":"111111"],["name":"家庭","number":"666666"]]]
            ])
            print(json[0]["phones"][0]["number"])//输出:222222
            print(json[0]["phones"][0]["number1"])//输出:null
            json[0]["phones"][0]["number1"] = "888888"//说明可以赋值,前提是json声明使用var
            print(json[0]["phones"][0]["number1"])//输出:888888
    //        判断一个值是否存在,因为我数组里面就两个值,我使用2就会发生数据越界,但是使用SwiftJson就不会有问题
            if(json[0]["phones"][2]["number"].stringValue.isEmpty){
                print("这里代表不存在")
            }else{
                print(json[0]["phones"][2]["number"].stringValue)
            }
            //输出:这里代表不存在
    
  • 相关阅读:
    windows xp professional 序列号(密钥)及百度网盘下载地址
    创建1M-1T的虚拟磁盘(内存盘)——使用破解版 Primo Ramdisk Server Edition v5.6.0
    windows添加快速启动栏
    查看服务器最大支持的内存、查看目前已安装的内存、查看服务器序列号
    限制“百度云管家”的后台静默上传
    完全卸载TeamViewer与重新安装TeamViewer 7(含单文件版V12主控端)
    无法通过CTRL+空格及SHIFT+CTRL调出输入法的解决方案
    VMware Workstation Pro 11、12 密钥
    快速擦除硬盘数据
    隐藏与禁用硬盘分区——利用工具或注册表
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/11936903.html
Copyright © 2020-2023  润新知