Если вы спрашиваете о маршалинге JSON (который не является синтаксическим анализом) и хотите, чтобы поля маршалировались в определенном порядке, маршалер, как правило, будет маршалировать поля в порядке их индекса и обрабатывать любые встроенные структуры по пути. Индексы структурных полей - как видно из пакета reflect
, используемого json.Marhsal
- определяются порядком их появления в вашем коде.
Итак, поместите поля, которые вы хотите, первыми, а любые встроенные структуры позже:
type Root struct {
Foo string `json:"foo"`
Bar string `json:"bar"`
Inner // <- move this last
}
Детская площадка Пример
b, _ := json.Marshal(Root{})
{"foo":"","bar":"","fooInner":""}