Desejo usar o "encoding/json"
pacote para organizar uma estrutura declarada em um dos pacotes importados do meu aplicativo.
Por exemplo.:
type T struct {
Foo int
}
Como é importado, todos os campos disponíveis (exportados) na estrutura começam com uma letra maiúscula. Mas desejo ter nomes-chave em minúsculas:
out, err := json.Marshal(&T{Foo: 42})
vai resultar em
{"Foo": 42}
mas eu quero conseguir
{"foo": 42}
É possível contornar o problema de alguma maneira fácil?
json
go
marshalling
ANisus
fonte
fonte
Respostas:
Dê uma olhada nos documentos para codificação / json.Marshal . Ele discute o uso de tags de campo struct para determinar como o json gerado é formatado.
Por exemplo:
Isso irá gerar JSON da seguinte maneira:
fonte
reflect
pacote.json:"some_tag"
vez dejson: "some_tag"
. Eu fiquei com isso por um tempo.Você pode criar sua própria estrutura com as chaves que deseja exportar e fornecer a elas as tags json apropriadas para nomes em minúsculas. Em seguida, você pode copiar a estrutura desejada na sua antes de codificá-la como JSON. Ou, se você não quiser se preocupar em criar uma estrutura local, provavelmente poderá criar
map[string]interface{}
e codificar isso.fonte
map[string]interface{}
iria trabalhar enquanto eu não acabar com aninhados objetos / estruturas