色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang 返回json過(guò)濾字段

老白1年前10瀏覽0評(píng)論

隨著大數(shù)據(jù)時(shí)代的到來(lái),我們對(duì)于數(shù)據(jù)的處理變得越來(lái)越重要。而JSON作為一種輕量級(jí)的數(shù)據(jù)交換格式,越來(lái)越受到大家的喜愛(ài)。

在golang中,我們經(jīng)常需要通過(guò)接口返回JSON數(shù)據(jù),但有時(shí)我們只需要返回其中部分字段。這時(shí)候就需要使用golang過(guò)濾JSON字段。

我們可以使用golang自帶的"encoding/json"包來(lái)進(jìn)行JSON的編解碼。將結(jié)構(gòu)體通過(guò)json序列化后,再通過(guò)字節(jié)數(shù)組進(jìn)行傳遞,并在前端進(jìn)行反序列化。

type User struct {
ID         int    `json:"id"`
Name       string `json:"name"`
Password   string `json:"-"`
Created_at string `json:"created_at"`
}
b, err := json.Marshal(User{
ID:         1,
Name:       "Bob",
Password:   "123456",
Created_at: "2021-01-01 00:00:00",
})
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(b))

上面的代碼通過(guò)結(jié)構(gòu)體序列化成JSON字符串,輸出結(jié)果如下:

{"id":1,"name":"Bob","created_at":"2021-01-01 00:00:00"}

但是我們不希望在返回的JSON字符串中包含"password"字段。這時(shí)候我們可以在結(jié)構(gòu)體中通過(guò)"-"標(biāo)記使字段在JSON序列化中被忽略。

或者我們也可以在序列化前,手動(dòng)過(guò)濾掉需要過(guò)濾的字段:

type User struct {
ID         int    `json:"id"`
Name       string `json:"name"`
Password   string `json:"-"`
Created_at string `json:"created_at"`
}
user := User{
ID:         1,
Name:       "Bob",
Password:   "123456",
Created_at: "2021-01-01 00:00:00",
}
filteredUser := map[string]interface{}{
"id":         user.ID,
"name":       user.Name,
"created_at": user.Created_at,
}
b, err := json.Marshal(filteredUser)
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(b))

上面的代碼通過(guò)手動(dòng)構(gòu)建過(guò)濾掉"password"字段的結(jié)構(gòu)體,并進(jìn)行序列化。輸出結(jié)果與之前相同:

{"id":1,"name":"Bob","created_at":"2021-01-01 00:00:00"}

以上就是golang返回JSON過(guò)濾字段的一些簡(jiǎn)單方法,希望能對(duì)大家有所幫助。