package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
simplejson "github.com/bitly/go-simplejson"
)
func main() {
// 这里需要注意地址中/的转义
// 使用%252F转义"/"
url := "http://192.168.112.111:1903/api/v2.0/projects/test/repositories/zhangxueliang%252Fmyapp/artifacts"
resp, err := http.Get(url)
if err != nil {
fmt.Println("报错了")
return
}
// 获取到响应的response 注意:body为[]byte
body, _ := ioutil.ReadAll(resp.Body)
// 定义map数组 用于json数组的转换源 map的value是interface{}空接口
var rr []map[string]interface{}
// 进行反序列化
json.Unmarshal(body, &rr)
for _, v := range rr {
// b是[]byte
b, _ := json.Marshal(v)
// 使用simple-json库 操作起来更方便
mapStr, err := simplejson.NewJson(b)
if err != nil {
panic(err)
}
// 获取到key为tags的map
tags, err := mapStr.Get("tags").Array()
// fmt.Println(tags)
for _, value := range tags {
// fmt.Println(value["name"]) //会报错
// 要先使用断言 否则报错
tagname, _ := value.(map[string]interface{})
fmt.Println(tagname["name"])
}
}
}
Go使用simple-json解析json数组字符串:以Harbor获取镜像tag为例
最新推荐文章于 2024-03-16 09:56:25 发布