Lowercase JSON key names with JSON Marshal in Go


I wish to use the "encoding/json" package to marshal a struct declared in one of the imported packages of my application.


type T struct {
    Foo int

Because it is imported, all available (exported) fields in the struct begins with an upper case letter. But I wish to have lower case key names:

out, err := json.Marshal(&T{Foo: 42})

will result in


but I wish to get


Is it possible to get around the problem in some easy way?


Have a look at the docs for encoding/json.Marshal.
It discusses using struct field tags to determine how the generated json is formatted.

For example:

type T struct {
    FieldA int    `json:"field_a"`
    FieldB string `json:"field_b,omitempty"`

This will generate JSON as follows:

    "field_a": 1234,
    "field_b": "foobar"

Answered By – jimt

Answer Checked By – Robin (GoLangFix Admin)

Leave a Reply

Your email address will not be published.