首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON在每次请求时都抛出nil

JSON在每次请求时都抛出nil
EN

Stack Overflow用户
提问于 2020-08-03 23:16:31
回答 1查看 46关注 0票数 0

我第一次尝试解析JSON数据。输出结果是- Course (成功:零,时间戳:零,基础:零,日期:零,课程:零)为什么到处都是零?

我试图更改"Course“和"Currency”结构中的值,但没有成功

代码语言:javascript
运行
复制
import UIKit
import JavaScriptCore


struct Course: Decodable {
    var success: Bool?
    var timestamp: Int?
    var base: String?
    var date: String?
    var rates: Currency?
}

struct Currency: Decodable {
    var USD: Float
    var AUD: Double
    var CAD: Double
    var PLN: Double
    var MXN: Double
    
}


class JsonViewContoller: UIViewController {
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        
        let urlData: String = "http://data.fixer.io/api/latest?access_key=7ac2982c82da926b787fd2f089b110e5&symbols=USD,AUD,CAD,PLN,MXN&format=1"
        guard let url = URL(string: urlData) else { return }
        
        URLSession.shared.dataTask(with: url) { (data, response, error) in
            guard let data = data else { return }
            guard error == nil else { return }
            do {
                let course = try JSONDecoder().decode(Course.self, from: data)
                print(Course())
                
            } catch let error {
                print(error)
            }
            
        }.resume()
        
    }
    
    
    
    
    
}
EN

回答 1

Stack Overflow用户

发布于 2020-08-03 23:53:14

我已经运行了您的代码,您不需要使用两个结构来解析上面的JSON数据。您可以轻松地获取单个结构中的数据。我已经修改了你的代码如下:

代码语言:javascript
运行
复制
import UIKit

struct Course: Codable {
    let success: Bool?
    let timestamp: Int?
    let base, date: String?
    let rates: [String: Double]?
}

class JsonViewContoller: UIViewController {
    
   override func viewDidLoad() {
        super.viewDidLoad()  
        courseData()   
   } 

  fileprivate func courseData(){
        let urlData: String = "http://data.fixer.io/api/latest?access_key=7ac2982c82da926b787fd2f089b110e5&symbols=USD,AUD,CAD,PLN,MXN&format=1"
        guard let url = URL(string: urlData) else { return }

        URLSession.shared.dataTask(with: url) { (data, response, error) in
            guard let data = data else { return }
            guard error == nil else { return }
            do {
                let course = try JSONDecoder().decode(Course.self, from: data)
                print(course)

            } catch let error {
                print(error)
            }

        }.resume()

    }

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

https://stackoverflow.com/questions/63232159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档