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

go语言请求http接口示例 并解析json的更多相关文章

  1. 记一次sql server 2005访问http接口,并解析json的过程

    记一次sql server 2005访问http接口,并解析json的过程  JSON解析官方网站:https://www.red-gate.com/simple-talk/sql/t-sql-pro ...

  2. C语言cJSON库的使用,解析json数据格式

    C语言cJSON库的使用,解析json数据格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html 对于c语言来说是没有字典这样的结构的,所以对于解析 ...

  3. Kettle通过Http post请求webservice接口以及结果解析处理

    kettle中有两种方式请求webservice服务,一个是Web服务查询,但是这个有缺陷,无法处理复杂的需求,遇到这种情况就需要用Http post来处理了. 网上也有很多关于Http post请求 ...

  4. 新浪短链接API接口示例

    <?php /** * URL地址长短切换,由sina新浪短链接API生成 * User: chenqt * Date: 2016/8/23 * Time: 18:45 */ class Url ...

  5. C++解析JSON之JsonCPP

    一.JSON简介 JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读.编写.解析. JSON由两种基本结构构成: )"名称/值" ...

  6. php中创建和调用webservice接口示例

    php中创建和调用webservice接口示例   这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservi ...

  7. webservice接口示例(spring+xfire+webservice)

      webservice接口示例(spring+xfire+webservice) CreateTime--2018年4月2日17:36:07 Author:Marydon 一.准备工作 1.1 ja ...

  8. HTTPS请求HTTP接口被浏览器阻塞,python实现websocket客户端,websocket服务器,跨域问题,dwebsocket,https,拦截,服务端

    HTTPS请求HTTP接口被浏览器阻塞,python实现websocket客户端,websocket服务器,跨域问题,dwebsocket,https,拦截,服务端 发表时间:2020-03-05 1 ...

  9. webapi+Task并行请求不同接口实例

    标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...

  10. 阶段一:通过网络请求,获得并解析JSON数据(天气应用)

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...

随机推荐

  1. 信息资源管理综合题之“ITSM(IT服务管理)和ITIL(基础架构标准库)内容”

    一.在百度百科中,关于IT服务管理有如下描述:专家的研究和大量企业时间表明,在IT项目的生命周期中,大约80%的时间与IT项目运营维护有关,而该阶段的投资仅占整个IT投资的20%,形成了典型的&quo ...

  2. 操作系统综合题之“用记录型信号量机制的wait和signal操作来解决了由北向南和由南向北过河人的同步问题(独木桥问题-代码补充)”

    1.问题:一条哦东西走向河流上,有一根南北走向的独木桥,要想过河只能通过这根独木桥.只要人们朝着相同的方向过独木桥,同一时刻允许有多个人可以通过.如果在相反的方向上同时有两个人过独木桥则会发生死锁.如 ...

  3. JS的哪些新特性,你都用过么?

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  4. CentOS 7.6 安装JDK 1.8

    第一步,下载一个rpm包,下载链接如下 https://www.oracle.com/cn/java/technologies/downloads/ 第二步:上传到服务器中 第三步:输入命令进行安装 ...

  5. MongoDB中distinct的用法

    作用 获取集合中指定字段的不重复值,并以数组的形式返回 语法 db.collection_name.distinct(field,query,options) field:指定返回的字段(string ...

  6. odoo15里面密码与附件加密方式

    一.odoo里面用户设置的密码加密方式 加密是用[Passlib生成的PBKDF2 SHA512哈希] 加密后位数是128位 ` def _set_password(self): ctx = self ...

  7. Spring AOP 面向切面编程之搞定表单重复提交实战

    摘要:客户端在5秒内请求同一URL,而且关键请求参数相等,则视此次请求为重复提交,利用自定义注解 .Spring AOP 和 Guava Cache 技术栈在服务器端实现拦截表单重复提交,防止刷单. ...

  8. Web性能优化:从 2 秒到秒开

    前不久发布了个人笔记软件 Nebula Note 的Web预览版(传送门),整体开发体验和使用效果都很满意.但作为Web工程师的我习惯性的打开了浏览器开发者工具的Network面板,主要想观察首次加载 ...

  9. 解决Vditor加载Markdown网页很慢的问题(Vite+JS+Vditor)

    1. 引言 在上一篇文章<使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)>中,详细介绍了通过Vditor将Markdown格式文档渲染成Web网页的过程, ...

  10. 从零开始学Flink:揭开实时计算的神秘面纱

    一.为什么需要Flink? 当你在电商平台秒杀商品时,1毫秒的延迟可能导致交易失败:当自动驾驶汽车遇到障碍物时,10毫秒的计算延迟可能酿成事故.这些场景揭示了一个残酷事实:数据的价值随时间呈指数级衰减 ...