使用go获取疫情数据

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))
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值