Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengalih keluar Teg `omitempty` daripada JSON Dijana Protobuf?

Bagaimana untuk Mengalih keluar Teg `omitempty` daripada JSON Dijana Protobuf?

Patricia Arquette
Lepaskan: 2024-11-30 13:25:13
asal
986 orang telah melayarinya

How to Remove the `omitempty` Tag from Protobuf-Generated JSON?

Mengalih keluar Teg Omitempty daripada Teg JSON Dijana Penimbal Protokol

Pengenalan

Penimbal Protokol (Protobuf) ialah bahasa -mekanisme boleh diperluaskan neutral, platform neutral untuk mensiri data berstruktur. Apabila bekerja dengan Protobuf, mungkin perlu mengalih keluar teg omitempty daripada teg JSON yang dijana dalam fail *.pb.go. Artikel ini meneroka cara untuk mencapai ini menggunakan pelbagai kaedah.

Pilihan grpc-gateway

Jika menggunakan grpc-gateway, termasuk pilihan berikut semasa mencipta ServeMux akan memastikan bahawa nilai lalai hadir semasa JSON marshaling:

gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
Salin selepas log masuk

protobuf Pakej

Di luar grpc-gateway, pakej google.golang.org/protobuf/encoding/protojson (kini menggantikan github.com/golang/protobuf/jsonpb yang tidak digunakan) boleh digunakan untuk marshal Protocol Mesej penimbal. Dengan menggunakan struct Marshaler dengan set EmitDefaults: true, nilai lalai akan disertakan dalam output JSON:

func sendProtoMessage(resp proto.Message, w http.ResponseWriter) {
    w.Header().Set("Content-Type", "application/json; charset=utf-8")
    m := protojson.Marshaler{EmitDefaults: true}
    m.Marshal(w, resp) // Error handling omitted
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Teg `omitempty` daripada JSON Dijana Protobuf?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan