在golang中,使用json.Marshal()函數可以將一個結構體轉換為Json格式的字符串。但是,在實際開發中,我們可能希望控制Json輸出的格式,例如修改字段名稱、指定字段是否導出等。這時候就需要使用golang提供的Json導出設置。
type Person struct { Name string `json:"myName"` Age int `json:"-"` // -表示忽略該字段 } p := Person{"jack", 29} jsonBytes, _ := json.Marshal(p) fmt.Println(string(jsonBytes)) // {"myName":"jack"}
上述代碼中,我們定義了一個Person結構體,并且使用json注解修改了Name字段的輸出名稱為myName。另外,我們使用-符號阻止了Age字段的導出。
除了在結構體定義中使用注解的方式外,還可以使用json.Encoder的SetIndent方法設置縮進空格數。
p := Person{"jack", 29} jsonBytes, _ := json.Marshal(p) buf := bytes.NewBuffer(nil) enc := json.NewEncoder(buf) enc.SetIndent("", " ") enc.Encode(p) fmt.Println(buf.String()) // { // "myName": "jack" // }
通過以上代碼,我們成功地將Json輸出的格式控制在了一行內,并且每個鍵值對之間使用了4個空格進行縮進。
在golang中,Json導出設置非常方便,能夠幫助我們快速地實現Json字符串定制化輸出。使用Json導出設置,可以讓我們的代碼更加靈活、可維護。