[golang]-根據json中的某個key的值輸出對應的id

爺來辣發表於2020-12-11

導語:有一段json 如下 ,想根據傳入的username的值匹配到對應的id。 對應功能是傳入username,找到對應的id,刪除對應的使用者。

思路是 迴圈遍歷這個陣列,然後判斷 看看username是否等於輸入的username,如果等於輸出對應索引的id。

直接上程式碼

package api

import (
	"encoding/json"
	"fmt"

	"github.com/astaxie/beego"
)


type TestController struct {
	BaseController
}

type Person struct {
	Id int
	// Name     string
	Username string
}
func (c *TestController) Get() {
	var jsonBlob = []byte(`[
		{"id":12,"name":"阿斯頓2","username":"asidun2"},
		{"id":11,"name":"阿斯頓","username":"asidun"},
		{"id":10,"name":"阿狗","username":"agou"},
		{"id":9,"name":"阿貓","username":"amao"},
		{"id":8,"name":"GitLab Alert Bot","username":"alert-bot"},
		{"id":1,"name":"Administrator","username":"root"}
]`)
	var person []Person

	err := json.Unmarshal(jsonBlob, &person)
	if err != nil {
		fmt.Println("error:", err)
	}
	beego.Info("jq")
	fmt.Printf("%+v", person)

	fmt.Printf("out type:%T\n", person)
	beego.Info("jq")
	// beego.Info("jq")
	// beego.Info(jq)
	for _, v := range person {
		// beego.Info(v)
		beego.Info(v.Id, v.Username)
		if v.Username != "asidun" {
			beego.Info("使用者名稱不匹配", v.Username)
		} else {
			beego.Info("使用者名稱匹配成功", v.Username)
		}

		fmt.Printf("out type:%T\n", v)
	}
	c.Ctx.WriteString("content string")

}

直接請求http://localhost:8080/api/test

參考

https://blog.csdn.net/hp_cpp/article/details/101058472

相關文章