Sobes.tech
Назад к вопросам
Senior
2

Как переопределить способ преобразования поля структуры в JSON?

Компании, где спрашивали
SberAuto

Ответ от нейросети

sobes.tech AI

В Go для переопределения способа преобразования поля структуры в JSON можно реализовать интерфейс json.Marshaler для всей структуры или для конкретного поля, если оно является типом с методом MarshalJSON(). Это позволяет задать собственную логику сериализации.

Пример для поля с пользовательским типом:

package main

import (
    "encoding/json"
    "fmt"
)

type CustomType int

func (c CustomType) MarshalJSON() ([]byte, error) {
    // Преобразуем число в строку с префиксом
    return json.Marshal(fmt.Sprintf("custom-%d", c))
}

type MyStruct struct {
    Field CustomType `json:"field"`
}

func main() {
    s := MyStruct{Field: 42}
    data, _ := json.Marshal(s)
    fmt.Println(string(data)) // Output: {"field":"custom-42"}
}

Если нужно изменить сериализацию всей структуры, реализуйте метод MarshalJSON() для структуры целиком.