Supponiamo di aver scritto il seguente frammento di codice. Codice completo nel parco giochi here per chi è inclinato.Posso usare MarshalJSON per aggiungere campi arbitrari a una codifica json in 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))
}
Questo codice emette il seguente, esattamente come mi aspetto:
{
"Title": "Catch-22",
"Author": "Joseph Heller"
}
Supponiamo per un momento ho voluto aggiungere un campo per l'uscita JSON senza includere nel Book
struct. Forse un genere:
{
"Title": "Catch-22",
"Author": "Joseph Heller",
"Genre": "Satire"
}
Posso usare MarshalJSON()
per aggiungere un campo arbitrario il payload JSON su Marshal()
? Qualcosa di simile:
func (b *Book) MarshalJSON() ([]byte, error) {
// some code
}
Altro answers farmi pensare questo dovrebbe essere possibile, ma sto lottando per capire l'attuazione.