Nombres de teclas JSON en minúsculas con JSON Marshal en Go

Deseo utilizar el paquete "encoding/json" para ordenar una estructura declarada en uno de los paquetes importados de mi aplicación.

P.ej.:

 type T struct { Foo int } 

Debido a que se importa, todos los campos disponibles (exportados) en la estructura comienzan con una letra mayúscula. Pero deseo tener nombres de teclas minúsculas:

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

resultará en

{“Foo”: 42}

pero deseo obtener

{“foo”: 42}

¿Es posible sortear el problema de alguna manera fácil?

Echa un vistazo a los documentos para la encoding / json.Marshal . Discute el uso de tags de campo struct para determinar cómo se formatea el json generado.

Por ejemplo:

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

Esto generará JSON de la siguiente manera:

 { "field_a": 1234, "field_b": "foobar" } 

Puede hacer su propia estructura con las claves que desea exportar y darles las tags json apropiadas para los nombres en minúsculas. Luego puede copiar la estructura deseada en la suya antes de codificarla como JSON. O si no quieres molestarte en crear una estructura local, probablemente puedas hacer un map[string]interface{} y codificar eso.