Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengalih keluar Teg `omitempty` daripada JSON Dijana Protobuf?
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}))
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 }
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!