I’ve been following a tutorial on youtube about creating a weather app, i’ve done it and now i’m trying to improve it but i’m facing an issue :
I noticed that when i call the weather which gives the decoded output of the JSON data we got, from this decoder :
var previewWeather: ResponseBody = load("weatherData.json")
func load<T: Decodable>(_ filename: String) -> T {
let data: Data
guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
else {
fatalError("Couldn't find (filename) in main bundle.")
}
do {
data = try Data(contentsOf: file)
} catch {
fatalError("Couldn't load (filename) from main bundle:n(error)")
}
do {
let decoder = JSONDecoder()
return try decoder.decode(T.self, from: data)
} catch {
fatalError("Couldn't parse (filename) as (T.self):n(error)")
}
}
with this as document :
{"coord":{"lon":-74.006,"lat":40.7143},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":12.95,"feels_like":12.08,"temp_min":11.64,"temp_max":14.56,"pressure":1015,"humidity":68},"visibility":10000,"wind":{"speed":3.6,"deg":230},"clouds":{"all":0},"dt":1715551159,"sys":{"type":2,"id":2008101,"country":"US","sunrise":1715506889,"sunset":1715558603},"timezone":-14400,"id":5128581,"name":"New York","cod":200}
it clearly shows that it doesnt decode the full json file since its missing many data and tags:
Screenshot of the output from the load function
I’m asking if its possible to change the decoder so that it loads the full json data and values because im trying to get the country by doing weather.sys.country but it says that there is no sys available…
Thanks for the help
I tried to change the decoder using chatgpt but it just kept crashing, i want the loader to load the full data of the json file, so that i can call the value linked to the country
Jix is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
3