Kann ich mit MarshalJSON beliebige Felder zu einer JSON-Codierung in Golang hinzufügen?
Angenommen, ich habe den folgenden Codeausschnitt geschrieben. Voller Code auf dem SpielplatzHier für die geneigten.
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))
}
Dieser Code gibt genau wie erwartet Folgendes aus:
{
"Title": "Catch-22",
"Author": "Joseph Heller"
}
Angenommen, ich wollte für einen Moment ein Feld zur JSON-Ausgabe hinzufügen, ohne es in die JSON-Ausgabe aufzunehmenBook
struct. Vielleicht ein Genre:
{
"Title": "Catch-22",
"Author": "Joseph Heller",
"Genre": "Satire"
}
Kann ich benutzenMarshalJSON()
um der JSON-Nutzlast ein beliebiges Feld hinzuzufügenMarshal()
? So etwas wie:
func (b *Book) MarshalJSON() ([]byte, error) {
// some code
}
AndereAntworten Ich denke, das sollte möglich sein, aber ich habe Mühe, die Implementierung herauszufinden.