Cara Mengalih Keluar Teg Omitempty daripada Teg JSON Dijana dalam Struktur Penampan Protokol
Dalam kes penggunaan tertentu, mungkin perlu mengalih keluar teg omitempty daripada teg JSON yang dihasilkan untuk struktur penimbal protokol. Penampan protokol, terutamanya apabila digunakan dengan gRPC, ialah alat yang berkuasa untuk penyirian dan pemindahan data. Walau bagaimanapun, kemasukan teg omitempty boleh menyebabkan peninggalan nilai lalai atau kosong semasa JSON marshaling, yang mungkin tidak diingini.
Masalahnya
Apabila menggunakan penampan protokol dengan proksi JSON, struct yang dihasilkan mungkin mempunyai teg omitempty yang disertakan dalam teg JSON, seperti yang dilihat dalam contoh di bawah:
message Status { int32 code = 1; string message = 2; }
Struktur terhasil yang terhasil:
type Status struct { Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"` Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` }
Penyelesaian
Untuk mengalih keluar tag omitempty daripada struct yang dihasilkan, ada ialah dua pendekatan yang mungkin:
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
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) // You should check for errors here }
Dengan melaksanakan salah satu pendekatan ini, anda boleh mengalih keluar tag omitempty secara berkesan daripada teg JSON yang dihasilkan untuk struktur penimbal protokol anda, memastikan bahawa nilai lalai atau kosong disertakan semasa JSON marshaling.
Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Tag `omitempty` daripada JSON dalam Struktur Penampan Protokol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!