首页 > 其他分享 >go语言请求http接口示例 并解析json

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

时间:2024-03-17 22:01:47浏览次数:30  
标签:wea http string 示例 fmt json Println Tem

本例请求了天气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)")
}

标签:wea,http,string,示例,fmt,json,Println,Tem
From: https://www.cnblogs.com/ccwangjin/p/18079275

相关文章

  • 【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】
    2024.3.13Wednesday接上文【WEEK3】【DAY2】JSON交互处理第一部分【中文版】目录6.4.代码优化6.4.1.乱码统一解决6.4.2.返回JSON字符串统一解决6.5.测试集合输出6.5.1.在UserController.java中添加一个新方法json26.5.2.运行6.6.输出时间对象6.6.1.在UserControlle......
  • 递归示例-展开编号(Excel函数集团)
    展开编号=DROP(fx(COUNTA(B:B)-1),1)fx=LAMBDA(x,IF(x>0,VSTACK(fx(x-1),SEQUENCE(INDEX(Sheet4!$B:$B,x+1),,INDEX(Sheet4!$C:$C,x+1)))))使用Lambda定义x当x小于等0时,返回False,以此作为开关;当x为1时,返回False连接SEQUENCE(INDEX(Sheet4!$B:$B,2),,INDEX(Sheet4!$C:......
  • 为什么 HTTP3.0 使用 UDP 协议?
    HTTP2.0和TCP的关系HTTP2.0是2015年推出的,还是比较年轻的,其重要的二进制分帧协议、多路复用、头部压缩、服务端推送等重要优化使HTTP协议真正上了一个新台阶。像谷歌这种重要的公司并没有满足于此,而且想继续提升HTTP的性能,花最少的时间和资源获取极致体验。那肯定要问HTTP2.0......
  • HTTPS 协议
    深入了解HTTPS协议在当今数字化时代,网络安全是至关重要的。随着网络攻击日益增多,保护数据的安全和隐私变得尤为重要。HTTPS(HypertextTransferProtocolSecure)作为一种保护网络通信安全的协议,正日益受到重视。本文将深入探讨HTTPS协议的工作原理、优势以及实施方法。1.......
  • harbor命令行-python脚本-调用http API
    因为生产环境没有UI界面,也没有开放端口资源出来,无法通过web界面来管理harbor,故调用harbor提供的httpAPI来获取harbor信息和使用常用的功能。importrequestsimportjsonimporturllib.parsemy_auth=('admin','Lovedan@971220')harbor_addr="https://127.0.0.1"def查询......
  • Arthas - Can not read arthas version from: https://arthas.aliyun.com/api/latest_
    问题描述[ERROR]Cannotreadarthasversionfrom: https://arthas.aliyun.com/api/latest_version[ERROR]CannotfindArthasunderlocal:/root/.arthas/libandremoterepomirror:aliyun[ERROR]Unabletodownloadarthasfromremoteserver,pleasedownload......
  • 【Qt】使用Qt实现Web服务器(二):QtWebApp示例源码
    1、最简使用介绍Demo2演示了最简单的用法,输入url后返回“HelloWorld!”;下面详解示例代码,先看主函数1.1主函数#a)QtWebApp库中定义的名字空间stefanfringsusingnamespacestefanfrings;intmain(intargc,char*argv[]){......
  • C++ 简单使用Json库与muduo网络库
    C++简单使用Json库与muduo网络库C++使用Json库测试代码均在Ubuntu20上运行首先下载json.hpp的代码链接然后和你的测试代码放在同一目录下面导入方式#include"json.hpp"usingjson=nlohmann::json;json序列化代码测试1voidtest1(){jsonjs;js["id"]={1......
  • 服务器端jupyter notebook映射到本地浏览器的操作【文章转自https://www.cnblogs.com/
    这篇文章转自主要介绍了服务器端jupyternotebook映射到本地浏览器的操作,做科研经常有这样的需求:即需要借助服务器的计算资源,本地编辑的工程文件需要每次都传到服务器才能运行。jupyter是较好的交互式编辑工具,有没有一种方式可以在jupyter上编辑属于服务器的文件呢?这就引出了我们......
  • LLM大语言模型(七):部署ChatGLM3-6B并提供HTTP server能力
    目录HighLight部署ChatGLM3-6B并开启HTTPserver能力下载embedding模型bge-large-zh-v1.5HTTP接口问答示例LLM讲了个尴尬的笑话~HighLight将LLM服务化(如提供HTTPserver能力),才能在其上构建自己的应用。部署ChatGLM3-6B并开启HTTPserver能力下载embedding模型bge-l......