golang protobuf Entfernen Sie das Tag "omitemperty" aus den generierten JSON-Tags

8

Ich verwende Google Grpc mit einem JSON-Proxy. Aus irgendeinem Grund muss ich die omitempty -Tags von der in den * .pb.go-Dateien erzeugten Struktur entfernen.

wenn ich eine Proto-Nachricht wie diese habe

%Vor%

Die generierte Struktur sieht wie folgt aus

%Vor%

Aber ich muss das omitempty -Tag aus den generierten Strukturen entfernen. Wie kann ich das tun?

    
sadlil 11.01.2016, 07:32
quelle

3 Antworten

2

Eine [mehr] portable Lösung:

Verwenden Sie sed , um die Tags nach dem Generieren über protoc zu entfernen.

Beispiel für das, was ich tatsächlich in meinem Fall benutze: erzeuge Skript nach dem Erzeugen der * .pb.go-Dateien:

%Vor%

Hinweis: sed -i (Inline-Ersetzung) wird hier nicht verwendet, da dieses Flag zwischen Standard-OS-X und Linux nicht portierbar ist.

    
Jay Taylor 19.05.2016 23:05
quelle
0

Ich habe festgestellt, dass das omitempty json-Tag fest in das Protokoll eingeordnet ist. Quelle um Linie 1778:

%Vor%

Es wird leicht sein, die Quelle zu ändern und eine neue Protoc-gen-go-Binärdatei selbst zu erstellen.

Es ist erwähnenswert, dass dies wahrscheinlich nicht ratsam ist und aus verschiedenen Gründen nicht empfohlen wird, insbesondere weil Sie dann dafür verantwortlich sind, dass die gehackte Binärdatei immer verwendet wird, wenn die Protobufs neu generiert werden müssen.

    
Jiang YD 12.01.2016 01:42
quelle
0

Sie können das encoding / json-Paket in Ihren eigenen Ordner kopieren, zum Beispiel my_json, und ändern Sie omitEmpty Feld auf false und my_json.Marshal() verwenden, um die Struktur in JSON-Zeichenfolge zu codieren.

    
tailnode 09.02.2018 11:56
quelle

Tags und Links