首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SWIFT :我无法从URL解析数据?

SWIFT :我无法从URL解析数据?
EN

Stack Overflow用户
提问于 2020-06-05 14:12:29
回答 1查看 107关注 0票数 0

我正在尝试解析url中的数据,但是我无法将对象添加到我的游戏数组中,我陷入了调试印记(“无法解析数据”)。我的类Game继承自Codable,所以我看不出我遗漏了什么。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var games = [Game]()

    func download(at url: String, handler: @escaping (Data?) -> Void)
    {
        // 1 - Create URL
        guard let url = URL(string: url) else {
            debugPrint("Failed to create URL")
            handler(nil)
            return
        }
        // 2 - Create GET Request
        var request: URLRequest = URLRequest(url: url)
        request.httpMethod = "GET"
        // 3 - Create download task, handler will be called when request ended
        let task = URLSession.shared.dataTask(with: request) {
            (data, response, error) in handler(data)
        }
        task.resume()
    }
    func getGames() {
        // 1 - Download games
        download(at: "https://education.3ie.fr/ios/StarterKit/GameCritic/GameCritics.json")
        { (gameData) in
            if let gameData = gameData {
                // 2 - Decode JSON into a array of Game object
                let decoder: JSONDecoder = JSONDecoder()
                do {
                    self.games = try decoder.decode([Game].self, from: gameData)
                    DispatchQueue.main.async {
                        self.tableView.reloadData()
                    }
                }
                catch {
                    debugPrint("Failed to parse data") // I fail here
                }
            }
            else
            {
                debugPrint("Failed to parse data - error: \(error)")
            }
        }
    }

    override func viewDidLoad() {

        getGames()
        for elm in games
        {
            debugPrint(elm)
        }
        super.viewDidLoad()
    }

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"Failed to parse data - error: keyNotFound(CodingKeys(stringValue: \"small_path\", intValue: nil), Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: \"Index 0\", intValue: 0)], debugDescription: \"No value associated with key CodingKeys(stringValue: \\\"small_path\\\", intValue: nil) (\\\"small_path\\\").\", underlyingError: nil))"
EN

回答 1

Stack Overflow用户

发布于 2020-06-07 09:31:08

看起来您就快成功了:)

你说

我用smallImageUrl替换了small_path

但是请看一下来自https://education.3ie.fr/ios/StarterKit/GameCritic/GameCritics.json的JSON

这里有一条:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "id" : 0,
  "name" : "Shenmue",
  "smallImageURL" : "https://education.3ie.fr/ios/StarterKit/GameCritic/small0.jpg",
  "bigImageURL": "https://education.3ie.fr/ios/StarterKit/GameCritic/big0.jpg",
  "score": 16,
  "platform": "dreamcast"
},

正确的名称是smallImageURL,但在您的Swift Game结构/类中,您有一个名为smallImageUrl的属性(与JSON中的大写"rl“相比,Url中的"RL”是小写的)。这足以让JSONDecoder放弃所有的希望,真正地给up...yes!:)

因此,首先,尝试将您的属性从

smallImageUrl

smallImageURL

看看这会把你带到什么地方。

为属性选择不同的名称

如果你想为你的Swift变量使用一个不同于你收到的JSON中引用的名称,例如smallImageUrl而不是smallImageURL。我鼓励您查看用于编码/解码的documentation,更具体的部分名为:“选择属性以使用编码键进行编码和解码”

祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62217347

复制
相关文章
ISO swift下XML数据解析
import UIKit class ViewController: UIViewController ,NSXMLParserDelegate{ override func viewDidLoad() { super.viewDidLoad() //创建XMLParser对象,传入XML格式的数据文件 // var parser=NSXMLParser(contentsOfURL: NSURL(fileURLWithPath: NS
用户7108768
2021/10/29
1.1K0
dnspod url转发_url解析
一些比较常用的域名软件有又url转发的功能,类似于花生壳,nat123,dnspod等都有转发url的功能没大会具体是怎么转发的方式是怎么样的呢?经过网上资料查找,查看了一些书籍,大概有了一些了解
全栈程序员站长
2022/11/02
4.4K0
Swift 网络请求数据与解析
一: Swift 网络数据请求与处理最常用第三方  又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累。博客一篇写出来,好多就直接照抄,就没有实质性的把问题解决了,只是在发表的博客数量上 + 1 !!真心没意思。。     看看在Swift中是在怎样请求数据,解析数据加载图片这些的,也使我们最基本最常见的用法了,先说说这几个三方库:      第一个: Alamofire  (它的原作者就是AFNetworking的原作者,这个就不多说了,你要知道AFNet
Mr.RisingSun
2018/01/09
2.5K0
Swift 网络请求数据与解析
Golang URL解析
Golang URL解析 今天利用课余时间看了一下Go语言的URL解析,于是就实践了一下,为了大家一起学习交流,故贴出来和大家一起分享,如有什么错误,请各位大神批评指出,共同进步。 package m
李海彬
2018/03/27
6.4K0
nodejs解析url
nodejs中,提供了url这个非常实用的模块,用来做URL的解析。在做node服务端的开发时会经常用到。使用很简单,总共只有3个方法。
OECOM
2020/07/01
3.8K0
python:解析URL
这个函数的性能实在太差了。10000次用了整整45s。 在不严格的情况下,自己用split进行判定会好很多。快了12倍。
超级大猪
2019/11/22
1.3K0
Django url 反解析
Django 是个python中web-framework MTV框架能够快速的开发网站, 刚开始学习django时候, 对于模版里面经常根据自己项目的urls来手写链接. 虽然这种方法是可行的, 但是不是规范的。 为什么呢? 最近公司要做一个django改造, 由于改造需求的原因, 项目urls统一加上项目名字 urls.py 中很简单, 在url前面加上就行. 但是很多的模版中的url都要改掉. 这就增加了改造的复杂度。 通过此次改造我发现 其实django中有一种很好的机制, 来通过urls中的viewname 来反解析url生成url.
用户1416054
2018/08/02
8110
php执行URL解析
方法一:$url=http://www.baidu.com;file_get_contents(网络
Java架构师必看
2021/03/22
2.3K0
利用 URL 解析混淆
URL 在许多方面都是我们数字生活的中心,是我们与关键服务、新闻、娱乐等的链接。因此,浏览器、应用程序和服务器如何接收 URL 请求、解析它们和获取请求的资源的任何安全漏洞都可能给用户带来重大问题并损害对 Internet 的信任。
Khan安全团队
2022/01/12
2K0
python 解析url路径
原理:使用urlparse,先解析整个url,然后使用split('/')方式构造为词典,下面就可以直接读取
py3study
2020/01/07
2.1K0
Swift Codable 记录解析路径
在我们的工作中,各种特殊情况都有可能遇到,某些特定情况下,需要我们记录模型的解析路径,例如:
韦弦zhy
2021/11/24
8320
Swift 面向对象解析(二)
 接着上面一篇说的内容: 一 继承:      苹果继承与水果,苹果是水果的子类,则苹果是一种特殊的水果;这就是继承的关系,这个我们学OC的时候相信也都理解了,就不再描述定义了,下面的就叫继承: class ZXMessageCell: UITableViewCell { // 自定义的cell继承与UITableviewCell }      继承了父类,你也就能使用父类的属性方法,这些我们学OC的时候也都清楚。看下面几点,      1:重写父类的方法      2:重写父类的属
Mr.RisingSun
2018/01/15
9810
Swift 面向对象解析(一)
面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP)。面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组成的,面向对象编程则为对象提供了属性和方法,属性就是为了描述对象的一些状态,方法则是告诉你对象该做什么。面向对象和核心就是“类”和“对象”!在我刚接触编程的时候,其实我也很容易把这东西混淆了,你要也是刚接触编程,能帮到你的,我觉得反而是时间。你要实在是有点难理解,就别去钻牛角尖,也许明天因为某个东西你就会恍然大悟。超喜欢那种感觉!         面
Mr.RisingSun
2018/01/15
1.8K0
Swift 掌控Moya的网络请求、数据解析与缓存
解决的方案有很多,不过我比较习惯使用 MoyaMapper ,不仅可以解决上述问题,还提供了多种模型转换、数据互转、多种数据类型任意存储的便捷方法。掌控Moya的网络请求、数据解析与缓存简直易如反掌。
LinXunFeng
2018/12/04
2.8K0
Swift 掌控Moya的网络请求、数据解析与缓存
Tomcat URL解析差异漏洞
Tomcat是常见的web中间件,收到用户请求后再对客户端提交的参数、URL、Header、body的那个数据进行解析,生成request对象。
字节脉搏实验室
2020/07/15
1.9K0
Tomcat URL解析差异漏洞
Python3 解析url
1.Python3 解析url 示例代码: #!/usr/bin/python from urllib.parse import urlparse result = urlparse('htt
py3study
2020/01/03
1.2K0
如何使用 JavaScript 解析 URL
在 Web 开发中,有许多情况需要解析 URL,这篇主要学习如何使用 URL 对象实现这一点。
前端小智@大迁世界
2019/03/15
2.7K0
如何使用 JavaScript 解析 URL
源码解析-url状态检测神器ping-url
前言 ping-url是我最近开源的一个小工具,这篇文章也是专门写它设计理念的科普文。 为什么会做这个ping-url开源工具呢? 起因是:本小哥在某天接到一个特殊的需求,要用前端的方式判断任意一个u
我是leon
2019/08/28
1.9K0
Django之URL反向解析
反向解析的应用场景,是因为在软件开发初期,url地址的路径设计可能并不完美,后期需要进行调整,如果项目中很多地方使用了该路径,一旦该路径发生变化,就意味着所有使用该路径的地方都需要进行修改,这是一个非常繁琐的操作。
仙人技术
2020/06/28
1.9K0
点击加载更多

相似问题

[Swift]我无法从特定的URL获取任何JSON数据

13

使用Swift从URL解析XML

412

Swift:无法解析JSON数据

14

swift无法解析php数据

10

使用Swift解析JSON数据(来自URL)

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文