go语言请求http接口示例 并解析json

本例请求了天气api接口
对接流程
  1. 注册一个账号, 对接免费实况天气接口
  2. 阅读接口文档 http://tianqiapi.com/index/doc?version=day
  3. 请求接口
  4. 解析json
开发流程
  1. 创建一个 json.go 文件
  2. 需要引入的包
import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)
  1. 定义 Weather Struct

     go结构体内的变量首字母必须大写
    
type Weather struct {
	Nums        int
	Cityid      string
	City        string
	Date        string
	Week        string
	Update_time string
	Wea         string
	Wea_img     string
	Tem         string
	Tem_day     string
	Tem_night   string
	Win         string
	Win_speed   string
	Win_meter   string
	Air         string
	Pressure    string
	Humidity    string
}
  1. http.Get 请求接口
  2. json.Unmarshal 解析json
  3. gofmt -w json.go 格式化代码
完整代码
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type Weather struct {
	Nums        int
	Cityid      string
	City        string
	Date        string
	Week        string
	Update_time string
	Wea         string
	Wea_img     string
	Tem         string
	Tem_day     string
	Tem_night   string
	Win         string
	Win_speed   string
	Win_meter   string
	Air         string
	Pressure    string
	Humidity    string
}

func main() {
	resp, err := http.Get("http://v1.yiketianqi.com/free/day?appid=85841439&appsecret=EKCDLT4I&unescape=1&city=")
	if err != nil {
		fmt.Println("请求失败:", err)
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("读取响应失败:", err)
	}
	fmt.Println(string(body))
	jsonData := []byte(string(body))
	var wea Weather
	err2 := json.Unmarshal(jsonData, &wea)
	if err2 != nil {
		fmt.Println("error:", err2)
		return
	}
	fmt.Println("城市名称:", wea.City)
	fmt.Println("城市编号:", wea.Cityid)
	fmt.Println("当前日期:", wea.Date, wea.Week)
	fmt.Println("更新时间:", wea.Update_time)
	fmt.Println("今日天气:", wea.Tem, "°", wea.Wea, wea.Tem_night, "°~", wea.Tem_day, "°")
	fmt.Println("风向风力:", wea.Win, wea.Win_speed, wea.Win_meter)
	fmt.Println("空气质量:", wea.Air)
	fmt.Println("当前气压:", wea.Pressure)
	fmt.Println("当前湿度:", wea.Humidity)
	fmt.Println("数据来源:", "天气API(http://tianqiapi.com)")
}

相关推荐

  1. go语言请求http接口示例 解析json

    2024-03-21 15:56:08       20 阅读
  2. go语言接口http.Handler接口

    2024-03-21 15:56:08       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 15:56:08       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 15:56:08       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 15:56:08       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 15:56:08       18 阅读

热门阅读

  1. 如何使用PL/SQL工具批量导出表、存储过程、序列

    2024-03-21 15:56:08       21 阅读
  2. Go 利用上下文进行并发计算

    2024-03-21 15:56:08       19 阅读
  3. 使用Go Validator在Go应用中有效验证数据

    2024-03-21 15:56:08       17 阅读
  4. 做好自己,顺应时代

    2024-03-21 15:56:08       21 阅读
  5. jvm相关

    2024-03-21 15:56:08       18 阅读
  6. Linux生产者消费者模型(简易版)

    2024-03-21 15:56:08       20 阅读