Могу ли я использовать MarshalJSON для добавления произвольных полей в кодировку json в golang?
Предположим, я написал следующий фрагмент кода. Полный код на детской площадкеВот для тех, кто склонен.
type Book struct {
Title string
Author string
}
func main() {
ms := Book{"Catch-22", "Joseph Heller"}
out, err := json.MarshalIndent(ms, "", " ")
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(out))
}
Этот код выводит следующее, как я и ожидал:
{
"Title": "Catch-22",
"Author": "Joseph Heller"
}
Предположим, на мгновение я хотел добавить поле в вывод JSON, не включая его вBook
структура. Возможно жанр
{
"Title": "Catch-22",
"Author": "Joseph Heller",
"Genre": "Satire"
}
Могу ли я использоватьMarshalJSON()
добавить произвольное поле в полезную нагрузку JSON наMarshal()
? Что-то вроде:
func (b *Book) MarshalJSON() ([]byte, error) {
// some code
}
Другойответы Заставь меня думать, что это возможно, но я изо всех сил пытаюсь выяснить реализацию.