Создать JSON, где ключ - это инкрементное значение

Как в структуре Mark ключ сделать инкрементым значением?

 type Marks struct {
        Marks []*Mark `json:"marks"`
      }

//Mark структура Словарь марок
type Mark struct {
    Mark string `json:"mark"`
    SoldPart string `json:"soldPart,omitempty"`
}

Нужен такой JSON:

{
 "marks":{
 "1":{
 "mark":"MDEwMTIzNDU2Nzg5MTIzNTIxMDAwMDAwMDAwMDAwNh0yNDAxMjM0HTEwMDEyMzQ1Njc4OUFC"
 },
 "2":{
 "mark":"MDEwMTIzNDU2Nzg5MTIzNTIxMDAwMDAwMDAwMDAwNx0yNDAxMjM0HTEwMDEyMzQ1Njc4OUFC"
 },
 "3":{
 "mark":"MDEwMTIzNDU2Nzg5MTIzNTIxMDAwMDAwMDAwMDAwOB0yNDAxMjM0HTEwMDEyMzQ1Njc4OUFC"
 }
 }
}

Ответы (1 шт):

Автор решения: Ainar-G

Как-то так:

type Mark struct {
    Mark     string `json:"mark"`
    SoldPart string `json:"soldPart,omitempty"`
}

type Marks []*Mark

func (m Marks) MarshalJSON() (b []byte, err error) {
    if len(m) == 0 {
        return []byte(`[]`), nil
    }

    var o = make(map[int]*Mark, len(m))
    for i := range m {
        o[i+1] = m[i]
    }

    return json.Marshal(o)
}

type MarksResponse struct {
    Marks Marks `json:"marks"`
}

Playground: https://play.golang.org/p/TRgaUveMhlR.

→ Ссылка