加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用SwiftyJSON解析使用Swift的JSON时遇到问题

发布时间:2020-12-14 02:26:50 所属栏目:百科 来源:网络整理
导读:我是 swift的新手,我正在尝试解析一些我从私有API中检索的简单 JSON数据.我正在使用 SwiftJSON库. 无论我做什么,我都无法为变量“videoUploadId”分配来自JSON响应的“video_upload_id”值.我希望我提供足够的信息来获得一些帮助.谢谢 这是代码的一部分 let
我是 swift的新手,我正在尝试解析一些我从私有API中检索的简单 JSON数据.我正在使用 SwiftJSON库.

无论我做什么,我都无法为变量“videoUploadId”分配来自JSON响应的“video_upload_id”值.我希望我提供足够的信息来获得一些帮助.谢谢

这是代码的一部分

let task = session.dataTaskWithRequest(request,completionHandler: { (data : NSData!,response,error : NSError!) -> Void in
                if (error == nil) {
                    // Success
                    let statusCode = (response as NSHTTPURLResponse).statusCode
                    println("Status Code: (statusCode)rn")

                    println("Response: (response)rn")

                    println("Data: (data)rn")

                    let dataContent = NSString(data: data!,encoding: NSUTF8StringEncoding)!

                    println("UTF8 Data: (dataContent)rn")

                    let json = JSON(dataContent)

                    if let videoUploadId = json["video_upload_id"].int {

                        println("Video Upload ID (Dict: int): (videoUploadId)")
                    }

                    else if let videoUploadId = json["video_upload_id"].string {

                        println("Video Upload ID (Dict: string): (videoUploadId)")
                    }

                    else if let videoUploadId = json[0].int {

                        println("Video Upload ID (Array: int): (videoUploadId)")
                    }

                    else if let videoUploadId = json[0].string {

                        println("Video Upload ID (Array: string): (videoUploadId)")

                    }


                    else {
                        println(json["video_upload_id"].error)
                    }


                }
                else {
                    // Failure
                    println("URL Session Task Failed: %@",error.localizedDescription);
                }
            })
            task.resume()

这是我从我的控制台收到的:

登录响应:HTTP 200
状态代码:201

回复:{URL:https://// videos / uploads /} {状态代码:201,headers {
连接=“保持活力”;
“内容长度”= 24;
“Content-Type”=“application / json”;
Date =“Sun,2015年1月25日01:02:42 GMT”;
Location =“https://// videos / uploads /”;
Server =“Apache / 2.2.15(CentOS)”;
“Set-Cookie”=“session = eyJzZXNzaW9uX3Rva2VuIjp7IiBiIjoiUzAxWGFYRnlVVGM1YjBsa1kxWkJiV2xrYVZwcFZXdDFiR0ZLYW5GQ1VqRjFjbk5GIn19.B6XSMg.HXatQ76ZFaoZEQsnNu1BgsVECKA; HttpOnly; Path = /”;
}}

数据:< 7b227669 64656f5f 75706c6f 61645f69 64223a20 3736307d>

UTF8数据:{“video_upload_id”:760}

可选(Error Domain = SwiftyJSONErrorDomain Code = 901“Dictionary [”video_upload_id“]失败,它不是字典”UserInfo = 0x170238620 {NSLocalizedDescription = Dictionary [“video_upload_id”]失败,它不是字典})

从代码和控制台输出中可以看出,我试图以几种不同的方式设置变量,所有这些似乎都失败了.我收到错误“Dictionary [”video_upload_id“]失败,它不是字典”我甚至尝试前置“[”并附加“]”以试图查看它是否是格式化问题.

有线索吗?

你正在做错误的初始化.你应该使用:
let json = JSON(data:data) // data is NSData!

不需要将NSData转换为NSString,并且在某种程度上错误. SwiftyJSON只能用NSData或Swift对象初始化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读