got the structs working!

master
Simon Kellet 3 years ago
parent 63006015a6
commit 1993a207de
  1. 91
      main.go

@ -1,15 +1,21 @@
package main package main
import (
"encoding/json"
"fmt"
"os"
)
type WeatherAPI struct { type WeatherAPI struct {
Coord Coord `json:"coord"` Coord Coord `json:"coord"`
Weather Weather `json:"weather` Weather []Weather `json:"weather"`
Base string `json:"base"` Base string `json:"base"`
Main Main `json:"main"` Main Main `json:"main"`
Visability string `json:"visibility"` Visability int64 `json:"visibility"`
Wind Wind `json:"wind"` Wind Wind `json:"wind"`
Rain Rain `json:"rain"` Rain Rain `json:"rain"`
Clouds Cloud `json:"cloud"` Clouds Cloud `json:"cloud"`
dt DT `json:"dt"` DT int64 `json:"dt"`
Sys Sys `json:"sys"` Sys Sys `json:"sys"`
TimeZone int `json:"timezone"` TimeZone int `json:"timezone"`
ID int `json:"id"` ID int `json:"id"`
@ -18,7 +24,46 @@ type WeatherAPI struct {
} }
type Coord struct { type Coord struct {
//etc Lon float64 `json:"lon"`
Lat float64 `json:"lat"`
}
type Weather struct {
ID int `json:"id"`
Main string `json:"main"`
Description string `json:"description"`
Icon string `json:"icon"`
}
type Main struct {
Temp float64 `json:"temp"`
Feels_like float64 `json:"feels_like"`
Temp_min float64 `json:"temp_min"`
Temp_max float64 `json:"temp_max"`
Pressure float64 `json:"pressure"`
Humidity float64 `json:"humidity"`
}
type Wind struct {
Speed float64 `json:"speed"`
Deg float64 `json:"deg"`
gust float64 `json:"gust"`
}
type Rain struct {
T1h float64 `json:"1h"`
}
type Cloud struct {
All int `json:"all"`
}
type Sys struct {
Types int `json:"type"`
Id int64 `json:"id"`
Country string `json:"country"`
Sunrise int64 `json:"sunrise"`
Sunset int64 `json:"sunset"`
} }
func main() { func main() {
@ -26,7 +71,7 @@ func main() {
//setting up openweathermap api //setting up openweathermap api
lat := "56.122970" lat := "56.122970"
lon := "-3.932390" lon := "-3.932390"
city := "Stirling, uk" //city := "Stirling, uk"
api_key := "29e5139b86638988d333a28ba360bfd9" api_key := "29e5139b86638988d333a28ba360bfd9"
full := "https://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&appid=" + api_key + "" full := "https://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&appid=" + api_key + ""
fmt.Printf("\n------\nWeather url: %+s\n---------\n", full) fmt.Printf("\n------\nWeather url: %+s\n---------\n", full)
@ -39,19 +84,41 @@ func main() {
if err != nil { if err != nil {
panic(err) panic(err)
} }
*/
//print the html //print the html
//fmt.Printf("%s\n", html) //fmt.Printf("%s\n", html)
/*
out, _ := json.Marshal(html)
fmt.Printf("%s\n", out)
*/ */
/* /*
byteArray, error := json.MarshalIndent(html, "", " ") jsonFile, err := os.Open("stirling.json")
if error != nil { // if we os.Open returns an error then handle it
if err != nil {
fmt.Println(err) fmt.Println(err)
} }
fmt.Println("Successfully Opened stirling.json")
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
var data WeatherAPI
fmt.Println(string(byteArray)) error := json.Unmarshal([]byte(byteValue), &data)
if error != nil {
fmt.Println(error)
return
}
//json.Unmarshal(byteValue, &data)
fmt.Println(data)
*/ */
data, _ := LoadConfiguration("./stirling.json")
fmt.Println(data)
}
func LoadConfiguration(file string) (WeatherAPI, error) {
var config WeatherAPI
configFile, err := os.Open(file)
if err != nil {
fmt.Println(err.Error())
}
jsonParser := json.NewDecoder(configFile)
jsonParser.Decode(&config)
return config, err
} }

Loading…
Cancel
Save