Handhabung von benutzerdefinierten BSON Marshalling (Golang & Mgo)

8

Ich habe eine Reihe von Strukturen, die ein benutzerdefiniertes Marshalling erfordern. Als ich getestet habe, habe ich JSON und den Standard-JSON-Marshaller verwendet. Da nicht-exportierte Felder nicht marshaliert werden, musste ich eine benutzerdefinierte MarshalJSON-Funktion schreiben, die perfekt funktionierte. Als ich json.Marshal auf der Eltern-Struktur anrief, die diejenigen enthielt, die ein benutzerdefiniertes Marshalling als Felder brauchten, funktionierte es gut.

Jetzt muss ich alles zu BSON für einige MongoDB-Arbeit marshallen, und ich kann keine Dokumentation darüber finden, wie man kundenspezifisches BSON-Marshalling schreibt. Kann mir jemand sagen, wie ich das Äquivalent für BSON / mgo für das, was ich unten demonstriert habe, tun kann?

currency.go (die wichtigen Teile)

%Vor%

product.go (noch einmal, nur die relevanten Teile)

%Vor%

Wenn ich json.Marshal (p) anrufe, wobei p ein Produkt ist, erzeugt es die gewünschte Ausgabe, ohne das Muster zu benötigen (ich bin mir des Namens nicht sicher), wo du eine Struktur erstellst, die nur ein Klon ist Felder.

Meiner Meinung nach vereinfacht die Verwendung der Inline-Methode, die ich verwendet habe, die API erheblich und verhindert, dass Sie zusätzliche Strukturen haben, die die Dinge durcheinander bringen.

    
leylandski 17.06.2015, 12:14
quelle

1 Antwort

13

Custom bson Marshalling / Unmarshalling funktioniert fast genauso, Sie müssen den Getter implementieren und Setter Schnittstellen

So etwas sollte funktionieren:

%Vor%     
HectorJ 17.06.2015, 13:03
quelle

Tags und Links