JSON сбрасывает ноль при каждом запросе - PullRequest
0 голосов
/ 03 августа 2020

Первый раз пытаюсь разобрать JSON данные. Выходит - Курс (успех: ноль, отметка времени: ноль, база: ноль, дата: ноль, курсы: ноль) Почему везде ноль?

Я пытался изменить значение в «Курсе» и «валютные» структуры, но не привели к успеху

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()
        
    }
    
    
    
    
    
}

1 Ответ

0 голосов
/ 03 августа 2020

Я запустил ваш код, вам не нужно использовать две структуры для анализа приведенных выше JSON данных. Вы можете легко получить данные в единой структуре. Я изменил ваш код следующим образом: -

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()

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...