package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"time"
)
type AutoGeneratedsx struct {
ReqID int64 `json:"reqId"`
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
ChinaTotal struct {
Today struct {
Confirm int `json:"confirm"`
Suspect interface{} `json:"suspect"`
Heal int `json:"heal"`
Dead int `json:"dead"`
Severe interface{} `json:"severe"`
StoreConfirm int `json:"storeConfirm"`
Input int `json:"input"`
} `json:"today"`
Total struct {
Confirm int `json:"confirm"`
Suspect int `json:"suspect"`
Heal int `json:"heal"`
Dead int `json:"dead"`
Severe int `json:"severe"`
Input int `json:"input"`
} `json:"total"`
ExtData struct {
NoSymptom int `json:"noSymptom"`
} `json:"extData"`
} `json:"chinaTotal"`
ChinaDayList []struct {
Date string `json:"date"`
Today struct {
Confirm int `json:"confirm"`
Suspect int `json:"suspect"`
Heal int `json:"heal"`
Dead int `json:"dead"`
Severe interface{} `json:"severe"`
StoreConfirm int `json:"storeConfirm"`
Input int `json:"input"`
} `json:"today"`
Total struct {
Confirm int `json:"confirm"`
Suspect int `json:"suspect"`
Heal int `json:"heal"`
Dead int `json:"dead"`
Severe interface{} `json:"severe"`
Input int `json:"input"`
StoreConfirm int `json:"storeConfirm"`
} `json:"total"`
ExtData interface{} `json:"extData"`
LastUpdateTime interface{} `json:"lastUpdateTime"`
} `json:"chinaDayList"`
LastUpdateTime string `json:"lastUpdateTime"`
OverseaLastUpdateTime string `json:"overseaLastUpdateTime"`
AreaTree []struct {
Today struct {
Confirm int `json:"confirm"`
Suspect interface{} `json:"suspect"`
Heal int `json:"heal"`
Dead int `json:"dead"`
Severe interface{} `json:"severe"`
StoreConfirm interface{} `json:"storeConfirm"`
} `json:"today"`
Total struct {
Confirm int `json:"confirm"`
Suspect int `json:"suspect"`
Heal int `json:"heal"`
Dead int `json:"dead"`
Severe int `json:"severe"`
Input int `json:"input"`
} `json:"total"`
ExtData struct {
} `json:"extData"`
Name string `json:"name"`
ID string `json:"id"`
LastUpdateTime string `json:"lastUpdateTime"`
Children []interface{} `json:"children"`
} `json:"areaTree"`
} `json:"data"`
Timestamp int64 `json:"timestamp"`
}
var apiUrls3="aHR0cHM6Ly9jLm0uMTYzLmNvbS91Zy9hcGkvd3VoYW4vYXBwL2RhdGEvbGlzdC10b3RhbAo="
//func cov19info(AutoGenerateds3s map[string]interface{}) {
func cov19info() []byte {
//fmt.Println(apiUrls3)
spaceClient := http.Client{
Timeout: time.Second * 2, // Maximum of 2 secs
}
req, err := http.NewRequest(http.MethodGet, apiUrls3, nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("User-Agent", "spacecount-tutorial")
res, getErr := spaceClient.Do(req)
if getErr != nil {
log.Fatal(getErr)
}
if res.Body != nil {
defer res.Body.Close()
}
body, readErr := ioutil.ReadAll(res.Body)
if readErr != nil {
log.Fatal(readErr)
}
return body
}
func main() {
cov19info()
AutoGenerateds3 := AutoGeneratedsx{}
body := cov19info()
jsonErr := json.Unmarshal(body, &AutoGenerateds3)
if jsonErr != nil {
log.Fatal(jsonErr)
}
for k, v := range AutoGenerateds3.Data.AreaTree[2].Children {
switch value := v.(type) {
case nil:
fmt.Println(k, "is nil", "null")
case string:
fmt.Println(k, "is string", len(value))
case int:
fmt.Println(k, "is int", value)
case float64:
fmt.Println(k, "is float64", value)
case []interface{}:
fmt.Println(k, "is an array:")
for i, u := range value {
fmt.Println(i, u)
}
case map[string]interface{}:
//dataType , _ := json.Marshal(v)
//dataString := string(dataType)
//fmt.Println(dataString)
//fmt.Println(k, "is an map:")
//fmt.Println(k,v)
//地区名称
fmt.Println(v.(map[string]interface{})["name"])
//fmt.Println(reflect.TypeOf(v.(map[string]interface{})["name"]))
//fmt.Println(reflect.TypeOf(v.(map[string]interface{})["today"].(map[string]interface{})["storeConfirm"]))
stringinf := fmt.Sprintf("%f", v.(map[string]interface{})["today"].(map[string]interface{})["storeConfirm"])
//stringinf := strconv.FormatFloat(v.(map[string]interface{})["today"].(map[string]interface{})["storeConfirm"],'f',-1,64)
fmt.Println(stringinf)
//return
//更新时间
//fmt.Println(v.(map[string]interface{})["lastUpdateTime"])
//比昨天新增
i := v.(map[string]interface{})["today"].(map[string]interface{})["storeConfirm"]
//stringinf := strconv.FormatFloat(i,'f',-1,64)
fmt.Println("较昨日新增", i) //
//
//fmt.Println("治愈:", v.(map[string]interface{})["today"].(map[string]interface{})["heal"]) //
fmt.Println("#################")
default:
fmt.Println(k, "is unknown type", fmt.Sprintf("%T", v))
}
}
}
使用go获取疫情数据
最新推荐文章于 2022-09-11 14:43:43 发布