2

i am using Urlsession and JSONDecoder to get and decode my data but somehow some variables on Weather struct returns nil while im decoding it. it may be something related to utf8 but I can't figure out how to handle.

 var request = URLRequest(url: URL(string: "myurlstring")
    URLSession.shared.dataTask(with: request) {(data,resp,err) in
        guard let data = data else { return }
        do{
            let decoder = JSONDecoder()
            let weatherData = try decoder.decode(Weather.self, from: data)
            completion(weatherData,nil)
        } catch let err {
            completion(nil,err)
        }

    }.resume()

im getting nil values as you can see here:

but on postman I can get non nil results

This is the raw json data that I get from postman

{"lat":39.92,"lon":32.85,"timezone":"Europe/Istanbul","timezone_offset":10800,"current":{"dt":1609623860,"sunrise":1609650620,"sunset":1609684530,"temp":2.26,"feels_like":-0.99,"pressure":1026,"humidity":72,"dew_point":-2,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.37,"wind_deg":72,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}]},"minutely":[{"dt":1609623900,"precipitation":0},{"dt":1609623960,"precipitation":0},{"dt":1609624020,"precipitation":0},{"dt":1609624080,"precipitation":0},{"dt":1609624140,"precipitation":0},{"dt":1609624200,"precipitation":0},{"dt":1609624260,"precipitation":0},{"dt":1609624320,"precipitation":0},{"dt":1609624380,"precipitation":0},{"dt":1609624440,"precipitation":0},{"dt":1609624500,"precipitation":0},{"dt":1609624560,"precipitation":0},{"dt":1609624620,"precipitation":0},{"dt":1609624680,"precipitation":0},{"dt":1609624740,"precipitation":0},{"dt":1609624800,"precipitation":0},{"dt":1609624860,"precipitation":0},{"dt":1609624920,"precipitation":0},{"dt":1609624980,"precipitation":0},{"dt":1609625040,"precipitation":0},{"dt":1609625100,"precipitation":0},{"dt":1609625160,"precipitation":0},{"dt":1609625220,"precipitation":0},{"dt":1609625280,"precipitation":0},{"dt":1609625340,"precipitation":0},{"dt":1609625400,"precipitation":0},{"dt":1609625460,"precipitation":0},{"dt":1609625520,"precipitation":0},{"dt":1609625580,"precipitation":0},{"dt":1609625640,"precipitation":0},{"dt":1609625700,"precipitation":0},{"dt":1609625760,"precipitation":0},{"dt":1609625820,"precipitation":0},{"dt":1609625880,"precipitation":0},{"dt":1609625940,"precipitation":0},{"dt":1609626000,"precipitation":0},{"dt":1609626060,"precipitation":0},{"dt":1609626120,"precipitation":0},{"dt":1609626180,"precipitation":0},{"dt":1609626240,"precipitation":0},{"dt":1609626300,"precipitation":0},{"dt":1609626360,"precipitation":0},{"dt":1609626420,"precipitation":0},{"dt":1609626480,"precipitation":0},{"dt":1609626540,"precipitation":0},{"dt":1609626600,"precipitation":0},{"dt":1609626660,"precipitation":0},{"dt":1609626720,"precipitation":0},{"dt":1609626780,"precipitation":0},{"dt":1609626840,"precipitation":0},{"dt":1609626900,"precipitation":0},{"dt":1609626960,"precipitation":0},{"dt":1609627020,"precipitation":0},{"dt":1609627080,"precipitation":0},{"dt":1609627140,"precipitation":0},{"dt":1609627200,"precipitation":0},{"dt":1609627260,"precipitation":0},{"dt":1609627320,"precipitation":0},{"dt":1609627380,"precipitation":0},{"dt":1609627440,"precipitation":0},{"dt":1609627500,"precipitation":0}],"hourly":[{"dt":1609621200,"temp":2.26,"feels_like":-0.99,"pressure":1026,"humidity":72,"dew_point":-2,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.37,"wind_deg":72,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609624800,"temp":3.06,"feels_like":-0.06,"pressure":1026,"humidity":73,"dew_point":-1.15,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.36,"wind_deg":73,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609628400,"temp":3.55,"feels_like":0.24,"pressure":1026,"humidity":74,"dew_point":-0.57,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.76,"wind_deg":69,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609632000,"temp":3.7,"feels_like":0.26,"pressure":1026,"humidity":74,"dew_point":-0.44,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.98,"wind_deg":68,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609635600,"temp":3.3,"feels_like":-0.02,"pressure":1026,"humidity":77,"dew_point":-0.3,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.83,"wind_deg":66,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609639200,"temp":3.08,"feels_like":-0.29,"pressure":1026,"humidity":78,"dew_point":-1.55,"uvi":0,"clouds":0,"visibility":10000,"wind_speed":1.9,"wind_deg":68,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609642800,"temp":2.68,"feels_like":-0.58,"pressure":1026,"humidity":80,"dew_point":-1.74,"uvi":0,"clouds":2,"visibility":10000,"wind_speed":1.73,"wind_deg":61,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609646400,"temp":2.91,"feels_like":-0.69,"pressure":1026,"humidity":78,"dew_point":-1.77,"uvi":0,"clouds":1,"visibility":10000,"wind_speed":2.19,"wind_deg":63,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609650000,"temp":2.31,"feels_like":-0.83,"pressure":1026,"humidity":82,"dew_point":-1.84,"uvi":0,"clouds":15,"visibility":10000,"wind_speed":1.56,"wind_deg":70,"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"pop":0},{"dt":1609653600,"temp":3.76,"feels_like":0.53,"pressure":1026,"humidity":74,"dew_point":-1.75,"uvi":0.2,"clouds":29,"visibility":10000,"wind_speed":1.69,"wind_deg":70,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"pop":0},{"dt":1609657200,"temp":6.01,"feels_like":2.76,"pressure":1026,"humidity":63,"dew_point":-1.27,"uvi":0.55,"clouds":100,"visibility":10000,"wind_speed":1.7,"wind_deg":67,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609660800,"temp":7.55,"feels_like":4.39,"pressure":1026,"humidity":57,"dew_point":-1.22,"uvi":1.1,"clouds":100,"visibility":10000,"wind_speed":1.59,"wind_deg":74,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609664400,"temp":8.65,"feels_like":5.61,"pressure":1025,"humidity":53,"dew_point":-1,"uvi":1.56,"clouds":100,"visibility":10000,"wind_speed":1.42,"wind_deg":79,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609668000,"temp":9.47,"feels_like":6.36,"pressure":1024,"humidity":50,"dew_point":-0.8,"uvi":1.68,"clouds":100,"visibility":10000,"wind_speed":1.52,"wind_deg":86,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609671600,"temp":9.96,"feels_like":6.64,"pressure":1023,"humidity":49,"dew_point":-0.72,"uvi":1.41,"clouds":100,"visibility":10000,"wind_speed":1.86,"wind_deg":84,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609675200,"temp":10.16,"feels_like":7.02,"pressure":1022,"humidity":48,"dew_point":-0.76,"uvi":0.9,"clouds":100,"visibility":10000,"wind_speed":1.58,"wind_deg":79,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609678800,"temp":9.96,"feels_like":7.12,"pressure":1022,"humidity":49,"dew_point":-0.6,"uvi":0.39,"clouds":100,"visibility":10000,"wind_speed":1.17,"wind_deg":76,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609682400,"temp":8.25,"feels_like":5.56,"pressure":1023,"humidity":56,"dew_point":0.04,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":1,"wind_deg":81,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609686000,"temp":6.37,"feels_like":3.53,"pressure":1023,"humidity":63,"dew_point":-0.42,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":1.19,"wind_deg":85,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609689600,"temp":6.08,"feels_like":3.17,"pressure":1023,"humidity":64,"dew_point":-0.51,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":1.28,"wind_deg":80,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609693200,"temp":5.66,"feels_like":2.84,"pressure":1024,"humidity":66,"dew_point":-0.57,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":1.15,"wind_deg":89,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609696800,"temp":5.35,"feels_like":2.6,"pressure":1024,"humidity":67,"dew_point":-0.7,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":1.03,"wind_deg":88,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609700400,"temp":5.17,"feels_like":2.55,"pressure":1024,"humidity":68,"dew_point":-0.81,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":0.86,"wind_deg":90,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609704000,"temp":4.66,"feels_like":2.12,"pressure":1024,"humidity":70,"dew_point":-1.03,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":0.72,"wind_deg":88,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609707600,"temp":4.11,"feels_like":1.43,"pressure":1023,"humidity":72,"dew_point":-1.31,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":0.89,"wind_deg":87,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609711200,"temp":3.65,"feels_like":1.2,"pressure":1023,"humidity":75,"dew_point":-1.44,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":0.59,"wind_deg":110,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609714800,"temp":3.17,"feels_like":1,"pressure":1023,"humidity":77,"dew_point":-1.44,"uvi":0,"clouds":100,"visibility":10000,"wind_speed":0.17,"wind_deg":168,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609718400,"temp":2.75,"feels_like":0.51,"pressure":1023,"humidity":80,"dew_point":-1.31,"uvi":0,"clouds":98,"visibility":10000,"wind_speed":0.29,"wind_deg":36,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"pop":0},{"dt":1609722000,"temp":2.38,"feels_like":-0.1,"pressure":1023,"humidity":82,"dew_point":-1.33,"uvi":0,"clouds":37,"visibility":10000,"wind_speed":0.63,"wind_deg":81,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"pop":0},{"dt":1609725600,"temp":2.1,"feels_like":-0.49,"pressure":1023,"humidity":83,"dew_point":-1.59,"uvi":0,"clouds":19,"visibility":10000,"wind_speed":0.77,"wind_deg":88,"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"pop":0},{"dt":1609729200,"temp":1.86,"feels_like":-0.54,"pressure":1023,"humidity":84,"dew_point":-1.77,"uvi":0,"clouds":12,"visibility":10000,"wind_speed":0.48,"wind_deg":93,"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"pop":0},{"dt":1609732800,"temp":1.65,"feels_like":-0.77,"pressure":1023,"humidity":85,"dew_point":-1.93,"uvi":0,"clouds":9,"visibility":10000,"wind_speed":0.5,"wind_deg":108,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609736400,"temp":1.62,"feels_like":-0.93,"pressure":1023,"humidity":86,"dew_point":-1.92,"uvi":0,"clouds":8,"visibility":10000,"wind_speed":0.71,"wind_deg":125,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"pop":0},{"dt":1609740000,"temp":3.22,"feels_like":0.54,"pressure":1023,"humidity":77,"dew_point":-1.43,"uvi":0.2,"clouds":6,"visibility":10000,"wind_speed":0.91,"wind_deg":114,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"pop":0},{"dt":1609743600,"temp":6.78,"feels_like":4.06,"pressure":1023,"humidity":60,"dew_point":-1.04,"uvi":0.59,"clouds":0,"visibility":10000,"wind_speed":0.96,"wind_deg":115,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"pop":0},{"dt":1609747200,"temp":8.01,"feels_like":5.38,"pressure":1022,"humidity":56,"dew_point":-0.88,"uvi":1.18,"clouds":0,"visibility":10000,"wind_speed":0.87,"wind_deg":131,"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"pop":0},{"dt":1609750800,"temp":8.83,"feels_like":6.08,"pressure":1021,"humidity":53,"dew_point":-0.47,"uvi":1.66,"clouds":29,"visibility":10000,"wind_speed":1.05,"wind_deg":124,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"pop":0},{"dt":1609754400,"temp":9.46,"feels_like":6.49,"pressure":1020,"humidity":51,"dew_point":0.02,"uvi":1.74,"clouds":47,"visibility":10000,"wind_speed":1.37,"wind_deg":145,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"pop":0},{"dt":1609758000,"temp":9.94,"feels_like":6.92,"pressure":1019,"humidity":52,"dew_point":0.55,"uvi":1.46,"clouds":58,"visibility":10000,"wind_speed":1.59,"wind_deg":155,"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"pop":0},{"dt":1609761600,"temp":10.25,"feels_like":7.2,"pressure":1018,"humidity":52,"dew_point":0.95,"uvi":0.93,"clouds":65,"visibility":10000,"wind_speed":1.7,"wind_deg":156,"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"pop":0},{"dt":1609765200,"temp":10.11,"feels_like":6.92,"pressure":1018,"humidity":54,"dew_point":1.3,"uvi":0.45,"clouds":98,"visibility":10000,"wind_speed":1.98,"wind_deg":155,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"pop":0},{"dt":1609768800,"temp":8.43,"feels_like":5.34,"pressure":1018,"humidity":62,"dew_point":1.79,"uvi":0,"clouds":49,"visibility":10000,"wind_speed":1.92,"wind_deg":138,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"pop":0},{"dt":1609772400,"temp":6.46,"feels_like":3.08,"pressure":1019,"humidity":70,"dew_point":1.58,"uvi":0,"clouds":32,"visibility":10000,"wind_speed":2.29,"wind_deg":116,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"pop":0},{"dt":1609776000,"temp":5.78,"feels_like":2.68,"pressure":1019,"humidity":74,"dew_point":1.65,"uvi":0,"clouds":25,"visibility":10000,"wind_speed":1.93,"wind_deg":109,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"pop":0},{"dt":1609779600,"temp":5.51,"feels_like":2.42,"pressure":1019,"humidity":76,"dew_point":1.65,"uvi":0,"clouds":20,"visibility":10000,"wind_speed":1.94,"wind_deg":102,"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"pop":0},{"dt":1609783200,"temp":5.2,"feels_like":2.13,"pressure":1019,"humidity":77,"dew_point":1.66,"uvi":0,"clouds":17,"visibility":10000,"wind_speed":1.88,"wind_deg":98,"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"pop":0},{"dt":1609786800,"temp":4.96,"feels_like":1.8,"pressure":1019,"humidity":77,"dew_point":1.41,"uvi":0,"clouds":16,"visibility":10000,"wind_speed":1.96,"wind_deg":98,"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"pop":0},{"dt":1609790400,"temp":4.73,"feels_like":1.54,"pressure":1019,"humidity":77,"dew_point":1.14,"uvi":0,"clouds":38,"visibility":10000,"wind_speed":1.94,"wind_deg":99,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"pop":0}],"daily":[{"dt":1609664400,"sunrise":1609650620,"sunset":1609684530,"temp":{"day":8.65,"min":2.26,"max":10.16,"night":4.66,"eve":6.37,"morn":2.68},"feels_like":{"day":5.61,"night":2.12,"eve":3.53,"morn":-0.58},"pressure":1025,"humidity":53,"dew_point":-1,"wind_speed":1.42,"wind_deg":79,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":100,"pop":0,"uvi":1.68},{"dt":1609750800,"sunrise":1609737022,"sunset":1609770983,"temp":{"day":8.83,"min":1.62,"max":10.25,"night":4.73,"eve":6.46,"morn":1.86},"feels_like":{"day":6.08,"night":1.54,"eve":3.08,"morn":-0.54},"pressure":1021,"humidity":53,"dew_point":-0.47,"wind_speed":1.05,"wind_deg":124,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"clouds":29,"pop":0,"uvi":1.74},{"dt":1609837200,"sunrise":1609823421,"sunset":1609857436,"temp":{"day":6.76,"min":3.75,"max":6.93,"night":3.88,"eve":5.25,"morn":4.19},"feels_like":{"day":4.84,"night":1.69,"eve":2.76,"morn":0.95},"pressure":1019,"humidity":70,"dew_point":1.73,"wind_speed":0.28,"wind_deg":74,"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],"clouds":100,"pop":0.84,"rain":3.33,"uvi":0.92},{"dt":1609923600,"sunrise":1609909818,"sunset":1609943891,"temp":{"day":7.92,"min":2.25,"max":9.68,"night":5.61,"eve":6.62,"morn":2.25},"feels_like":{"day":5.61,"night":3.19,"eve":3.93,"morn":-0.48},"pressure":1024,"humidity":75,"dew_point":3.86,"wind_speed":1.35,"wind_deg":138,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":85,"pop":0,"uvi":1.53},{"dt":1610010000,"sunrise":1609996213,"sunset":1610030348,"temp":{"day":9.52,"min":3.3,"max":11.03,"night":5.83,"eve":7.61,"morn":3.3},"feels_like":{"day":6.47,"night":2.14,"eve":3.99,"morn":0.96},"pressure":1018,"humidity":59,"dew_point":2.02,"wind_speed":1.94,"wind_deg":193,"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"clouds":73,"pop":0,"uvi":1.36},{"dt":1610096400,"sunrise":1610082606,"sunset":1610116805,"temp":{"day":8.46,"min":3.38,"max":10.97,"night":6.64,"eve":7.48,"morn":3.38},"feels_like":{"day":5.89,"night":4.27,"eve":5.51,"morn":0.69},"pressure":1020,"humidity":57,"dew_point":0.64,"wind_speed":0.93,"wind_deg":186,"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"clouds":99,"pop":0,"uvi":2},{"dt":1610182800,"sunrise":1610168997,"sunset":1610203264,"temp":{"day":8.61,"min":7.2,"max":10.59,"night":9.15,"eve":10.06,"morn":7.46},"feels_like":{"day":5.94,"night":6.09,"eve":7.12,"morn":4.51},"pressure":1018,"humidity":74,"dew_point":4.26,"wind_speed":2,"wind_deg":174,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":100,"pop":0.38,"rain":0.35,"uvi":2},{"dt":1610269200,"sunrise":1610255385,"sunset":1610289724,"temp":{"day":12.17,"min":6.69,"max":14.54,"night":9.62,"eve":10.91,"morn":6.69},"feels_like":{"day":9.55,"night":7.19,"eve":8.57,"morn":3.86},"pressure":1020,"humidity":59,"dew_point":4.61,"wind_speed":1.96,"wind_deg":194,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":74,"pop":0.51,"rain":0.99,"uvi":2}]}

ant this is my weather model

struct Weather: Codable {
let lat, lon: Double
let timezone: String?
let timezoneOffset: Int?
let current: Current?
let minutely: [Minutely]?
let hourly: [Current]?
let daily: [Daily]?

enum CodingKeys: String, CodingKey {
    case lat, lon, timezone
    case timezoneOffset
    case current, minutely, hourly, daily
}}

struct Current: Codable {
let dt, sunrise, sunset: Int?
let temp, feelsLike: Double?
let pressure, humidity: Int?
let dewPoint, uvi: Double?
let clouds, visibility: Int?
let windSpeed: Double?
let windDeg: Int?
let weather: [WeatherElement]?
let pop: Double?
let rain: Rain?

enum CodingKeys: String, CodingKey {
    case dt, sunrise, sunset, temp
    case feelsLike
    case pressure, humidity
    case dewPoint
    case uvi, clouds, visibility
    case windSpeed
    case windDeg
    case weather, pop, rain
}}

struct Rain: Codable {
let the1H: Double?

enum CodingKeys: String, CodingKey {
    case the1H
}}

struct WeatherElement: Codable {
let id: Int?
let main, weatherDescription, icon: String?

enum CodingKeys: String, CodingKey {
    case id, main
    case weatherDescription
    case icon
}}

struct Daily: Codable {
let dt, sunrise, sunset: Int?
let temp: Temp?
let feelsLike: FeelsLike?
let pressure, humidity: Int?
let dewPoint, windSpeed: Double?
let windDeg: Int?
let weather: [WeatherElement]?
let clouds: Int?
let pop, uvi, rain: Double?

enum CodingKeys: String, CodingKey {
    case dt, sunrise, sunset, temp
    case feelsLike
    case pressure, humidity
    case dewPoint
    case windSpeed
    case windDeg
    case weather, clouds, pop, uvi, rain
}}

struct FeelsLike: Codable {
let day, night, eve, morn: Double?}

struct Temp: Codable {
let day, min, max, night: Double?
let eve, morn: Double?}

struct Minutely: Codable {
let dt, precipitation: Double?}

its my first time here. Sorry for my mistakes.

jtbandes
  • 115,675
  • 35
  • 233
  • 266
MertGurcan
  • 23
  • 4
  • Please, post the raw JSON that you want to decode and your model. [How to create a Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) – gcharita Jan 02 '21 at 23:57
  • @gcharita I added json and my model – MertGurcan Jan 03 '21 at 00:18
  • 1
    All the properties that are nil seem to be ones that are in `snake_case`, but your model properties are all in `camelCase`. You could try using the `convertFromSnakeCase` `keyDecodingStrategy` on your `JSONDecoder`. – TylerP Jan 03 '21 at 00:32

1 Answers1

2

The problem is the names of the variables, for example:

timezone_offset should be exactly like it is, not timezoneOffset

you can update the enum CodingKeys to avoid bad naming practices.

enum CodingKeys: String, CodingKey {
    case lat, lon, timezone
    case timezoneOffset = "timezone_offset"
    case current, minutely, hourly, daily
}}
Camilo Lopez
  • 166
  • 5