Implementierung von Json Marshaller über Embedded Stuct in Go
Ich habe eine Struktur, die ich effizient JSON codieren möchte:
type MyStruct struct {
*Meta
Contents []interface{}
}
type Meta struct {
Id int
}
Die Struktur enthält Metadaten einer bekannten Form und Inhalte einer unbekannten Form. Die Inhaltsliste wird zur Laufzeit gefüllt, sodass ich nicht wirklich die Kontrolle über sie habe. Um die Marshalling-Geschwindigkeit von Go zu verbessern, möchte ich die Marshaller-Schnittstelle über die Meta-Struktur implementieren. Die Marshaller-Oberfläche sieht folgendermaßen aus:
type Marshaler interface {
MarshalJSON() ([]byte, error)
}
Bitte beachten Sie, dass die Metastruktur nicht so einfach ist wie hier gezeigt. Ich habe versucht, die Marshaler-Schnittstelle über die Meta-Struktur zu implementieren, aber es scheint, dass, wenn ich dann MyStruct mit JSON marshalle, das Ergebnis nur das Ergebnis ist, das von der Meta-Marshalling-Schnittstelle zurückgegeben wird.
Meine Frage lautet also: Wie kann ich mit JSON eine Struktur marshallen, die eine eingebettete Struktur mit einem eigenen JSON-Marshaller und eine andere Struktur ohne eine enthält?