json.RawMessage в Go. Зачем нужен.

Ответ

json.RawMessage - это []byte; при Unmarshal в него сохраняются сырые байты JSON без разбора. Удобно для отложенного парсинга или для полей с динамической структурой (например, payload события). При Marshal RawMessage выводится как вложенный JSON. Используют в обертках над событиями и в API с гибким телом.

type Event struct {
    Type string          // json:"type"
    Data json.RawMessage // json:"data"
}
var e Event
json.Unmarshal(input, &e)
switch e.Type {
case "user": var u User; json.Unmarshal(e.Data, &u)
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.