Go語言結構體轉json的坑


Go語言結構體轉json的坑

標簽(空格分隔): go

json.Marshal()

JSON輸出的時候必須注意,只有導出的字段(首字母是大寫)才會被輸出,如果修改字段名,那么就會發現什么都不會輸出,所以必須通過struct tag定義來實現。

針對JSON的輸出,我們在定義struct tag的時候需要注意的幾點是:

 - 字段的tag是"-",那么這個字段不會輸出到JSON
 - tag中帶有自定義名稱,那么這個自定義名稱會出現在JSON的字段名中
 - tag中如果帶有"omitempty"選項,那么如果該字段值為空,就不會輸出到JSON串中
 - 如果字段類型是bool, string, int, int64等,而tag中帶有",string"選項,那么這個字段在輸出到JSON的時候會把該字段對應的值轉換成JSON字符串

代碼示例

package main

import (
	"encoding/json"
	"fmt"
)

func main() {

type UserInfo struct {
	Id int
	Name string
	Address string
}

type Comiket struct {
	id int
	title string
}

type Test struct {
	Id int `json:"-"`
	Content string `json:"content"`
	IsDel bool `json:",string"`
	Type int `json:"type, omitempty"`
}

c := Comiket{1, "AS動漫游戲嘉年華"}
v, error := json.Marshal(c)
fmt.Println(string(v))
fmt.Println(error)
fmt.Println("------------------")

User := UserInfo{1, "taylor", "USA"}
b, err := json.Marshal(User)
fmt.Println(string(b))
fmt.Println(err)
fmt.Println("------------------")

t := Test{Id:1, Content:"hello world", IsDel:true}
val, _ := json.Marshal(t)
fmt.Println(string(val))

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM