Я хочу использовать "encoding/json"
пакет, чтобы упорядочить структуру, объявленную в одном из импортированных пакетов моего приложения.
Например.:
type T struct {
Foo int
}
Поскольку он импортируется, все доступные (экспортируемые) поля в структуре начинаются с заглавной буквы. Но я хотел бы иметь имена ключей в нижнем регистре:
out, err := json.Marshal(&T{Foo: 42})
приведет к
{ "Foo": 42}
но я хочу получить
{ "Foo": 42}
Можно ли обойти проблему каким-то простым способом?
json
go
marshalling
Anisus
источник
источник
Ответы:
Посмотрите документы для кодирования / json.Marshal . В нем обсуждается использование тегов struct field для определения того, как сгенерированный json отформатирован.
Например:
Это сгенерирует JSON следующим образом:
источник
reflect
пакет.json:"some_tag"
вместоjson: "some_tag"
. Я получил немного на некоторое время.Вы можете создать свою собственную структуру с ключами, которые вы хотите экспортировать, и дать им соответствующие теги json для строчных имен. Затем вы можете скопировать желаемую структуру в свою, прежде чем кодировать ее как JSON. Или, если вы не хотите создавать локальную структуру, вы, вероятно, можете создать
map[string]interface{}
и закодировать ее.источник
map[string]interface{}
будет работать до тех пор, пока я не