Heim >Backend-Entwicklung >Golang >Wie kann ich Protobuf-Erweiterungsfeldnamen in der JSON-Ausgabe anpassen?

Wie kann ich Protobuf-Erweiterungsfeldnamen in der JSON-Ausgabe anpassen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-26 15:17:13749Durchsuche

How Can I Customize Protobuf Extension Field Names in JSON Output?

Anpassen von Protobuf-Erweiterungsfeldnamen in JSON

Beim Erweitern einer Nachricht in Protokollpuffern (Protobuf) und beim Marshallen als JSON wird der Feldname verwendet für die erweiterte Nachricht erscheint normalerweise in Klammern mit dem Präfix „message.extension_message_name“. Dies kann unpraktisch und verwirrend sein, insbesondere wenn die Erweiterungsnachricht an anderer Stelle in der API mit einem anderen Namen verwendet wird.

Das Problem ergibt sich aus der Logik in der jsonpb-Bibliothek von Protobuf, wo der JSON-Name als „[%“ festgelegt ist. s]" desc.Name, wobei desc.Name den nicht qualifizierten Erweiterungsfeldnamen darstellt.

Um diese Einschränkung zu umgehen, schlägt der Sprachführer die Verwendung von vor Feldoption „json_name“, um den Standard-JSON-Namen zu überschreiben. Durch Hinzufügen von json_name = „custom_name“ zum Erweiterungsfeld wird das Feld mit dem angegebenen benutzerdefinierten Namen in JSON serialisiert:

message TestMessage {
    extend TestMessage {
        ExtensionPlacement extension_message_name = 10;
        String messageField = 10 [json_name = "customFieldName"];
    }
}

Mit dieser Änderung wird das erweiterte Feld in JSON als „customFieldName“ angezeigt gewünscht.

Das obige ist der detaillierte Inhalt vonWie kann ich Protobuf-Erweiterungsfeldnamen in der JSON-Ausgabe anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn