Back to questions
Senior
1
Как переопределить способ преобразования поля структуры в JSON?
Companies where asked
SberAuto
Answer from AI
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() для структуры целиком.