核心思路如下:

  1. 设置header和auth信息,获取http的request,
  2. 获取api返回的[]byte数据,然后反序列化结构体实例
  3. 如果api获取的是复杂json数据的话就需要定义map[string]interface{}来接收数据
  4. 取值赋值给返回结构体实例
package moduleimport ("encoding/json""fmt""io/ioutil""log""net/http"
)//定义Tapd返回结构体
type Tapd struct {ID       string `json:"id"`Title    string `json:"title"`Operator string `json:"operator"`Priority string `json:"priority"`Status   string `json:"status"`Url      string `json:"url"`
}//定义反序列化结构体结构
type Request struct {Status int    `json:"status"`Data   []Bug  `json:"data"`Info   string `json:"info"`
}//定义序列化Bug字段
type Bug map[string]interface{}func GetTAPDIssues(url, username, password string) ([]Tapd, int, error) {//get http clientclient := &http.Client{}req, err := http.NewRequest("GET", url, nil)if err != nil {log.Println("request tapd api failed", err)}// set Header and Authreq.Header.Set("Content-Type", "application/json")req.SetBasicAuth(username, password) response, err := client.Do(req)defer response.Body.Close()//获取response.Body中的数据,返回是[]byte类型的数据body, err := ioutil.ReadAll(response.Body)//创建结构体实例来反序列化json数据var request Requesterr = json.Unmarshal(body, &request)if err != nil {return nil, 0, nil}//request 中data字段值是interface类型//需要类型断言成 map[string]interface 类型的数据,以便获取var data map[string]interface{}var tapd []Tapd = make([]Tapd, 0)var temp Tapdfor i, _ := range request.Data {data = request.Data[i]["Bug"].(map[string]interface{})if fmt.Sprintf("%v", data["status"]) != "closed" && data["priority"].(string) == "high" || data["priority"].(string) == "urgent" {temp.ID = data["id"].(string)temp.Title = data["title"].(string)temp.Operator = data["current_owner"].(string)temp.Priority = data["priority"].(string)temp.Status = data["status"].(string)tapd = append(tapd, temp)}}return tapd, len(tapd), nil
}func main() {username := "xxx"password := "xxx"url := `https://api.tapd.cn/bugs?workspace_id=123243454`tapd, totalTapd, _ := GetTAPDIssues(url, username, password)fmt.Println("tapd====>", tapd)fmt.Println("len tapd====>", totalTapd)
}

golang连接tapd rest api反序列化json数据获取bug信息相关推荐

  1. java调用天气API和JSON解析的那些事儿

    人丑话不多: 直接上代码: 1.根据返回的json数据格式定义数据模型 import java.util.List;//定义一个描述天气的类 public class WeatherForecastI ...

  2. golang使用阿里云api进行中文分词

    golang使用阿里云api进行中文分词 笔者刚开始学习go语言,代码有些地方不是很规范而且冗余较多,肯定不是最优的方法,但最终也实现了中文分词,但是不知道什么原因有的时候运行可能会出错,多运行几次即 ...

  3. Golang连接Redis数据库

    Golang连接Redis数据库 golang连接数据库,这里博主推荐使用go-redis这个库,理由很简单(连接数据库的操作类似在数据库里面输入命令) go-redis的安装方式 go get -v ...

  4. 基于API和JSON的API数据交换:如何在API和JSON下实现高效、可靠的数据交换

    作者:禅与计算机程序设计艺术 1.简介 1.1 引言 近年来,随着云计算.大数据.物联网等技术的飞速发展,越来越多的人开始关注数字化转型.在这种转型过程中,企业需要掌握自身的信息资产及其价值,进行信息 ...

  5. 使用JackJSON 流式API 创建JSON串【学习记录】

    教程网址:Jackson流式API 目标JSON串 原始JSON串 核心代码 思路:先将原始JSON串生成对应的对象,获取到其数据 package com.run.runlpwebdemo.utils ...

  6. golang 结构体 map 转化为 json

    目录 结构体生成json json转成结构体 map生成json json转化为map 结构体生成json package mainimport ("encoding/json"& ...

  7. golang 接口_「实战」助力数据库开发之接口篇 - Golang 连接 Greenplum

    Greenplum 作为一款强大的 HTAP 数据库,针对大多数流行语言都有相应的连接库.大部分均是与 PostgreSQL 采用相同的接口,但是也有部分接口是 Greenplum 专门优化后用于自身 ...

  8. 64位oracle客户端_开发小记-golang连接Oracle数据库配置

    项目需求golang连接Orale数据库,使用mattn/go-oci8包,github地址 https://github.com/mattn/go-oci8 过程 Oracle Client和SDK ...

  9. js反序列化html编码,JavaScript实现的反序列化json字符串操作示例

    本文实例讲述了JavaScript实现的反序列化json字符串操作.分享给大家供大家参考,具体如下: JavaScript中如何反序列化json字符串呢? 有如下两种方法: (1) 使用万能的eval ...

最新文章

  1. mysql锁总结知乎_Mysql悲观锁乐观锁区别与使用场景
  2. logback无法生成日志文件之谜
  3. [MySQL基础]MySQL语法规范介绍
  4. 22桥接模式(Bridge Pattern)
  5. linux的基础知识——TCP异常断开
  6. leetcode42 --- trap
  7. c++new时赋初值_优质 quot;嵌入式C编程quot; 必备指南
  8. ul li前面的点怎么变大_硅片尺寸变大,生产成本降低,光伏电池生产商转向更大尺寸硅片...
  9. C语言 标准I/O库: stdio.h
  10. 标题在图表上_图与表,让你的图表更简单清晰易读,告诉你怎么设置图表
  11. SAP License:对不起,“下一代ERP”仍旧是现在的ERP
  12. HTML5视频播放器
  13. 计算机逻辑运算进位,二进位数进行逻辑运算1010AND1001的运算结果
  14. 比亚迪发布九款新车 首次展示L4技术和BNA升级架构...
  15. python 手机号码归属地 软件,Python查询手机号码归属地几种方法
  16. java剪刀石头布编程_Java如何编写石头剪子布游戏程序
  17. PHP中MD5函数效率
  18. 阿里云ECS云盘挂载
  19. PNAS | 朱永官院士团队单细胞拉曼结合靶向宏基因组揭示土壤活性抗生素耐药组...
  20. 解决序列长期依赖的法宝——注意力机制

热门文章

  1. 图像处理(八)——图像重建
  2. Spring IOC循环依赖
  3. 小二读西游-石猴破,金光宣
  4. Luenberger Observer线性观测器设计
  5. vscode ssh连接linux虚拟机在重置虚拟机网络后连接不上的问题(已解决)
  6. SAP 创建销售订单-用外部给号的方法步骤
  7. Web简历信息管理系统
  8. 为面试做准备,整理一些计算机专业的基础知识
  9. cp1025 linux驱动下载,HP LaserJet 专业 CP1025 彩色打印机驱动下载
  10. 乐学偶得《零基础Python入门编程全栈量化AI》课程238课的详细完整代码怎么样实现?靠谱答案来啦啦啦╭(╯^╰)╮