Menyahkod JSON kepada Protobuf dengan Medan Bukan Primitif
Isu timbul apabila cuba menyahmarshal JSON yang mengandungi medan bukan primitif, seperti Data dalam kes ini, ke dalam Protobuf menggunakan perpustakaan "pengekodan/json". Tingkah laku lalai pustaka tidak dapat mengendalikan medan ini dengan betul, menyebabkan medan tersebut ditetapkan kepada sifar.
Menggunakan Pengekodan Protobuf/Protojson
Untuk mengendalikan bukan dengan betul -medan primitif, anda harus menggunakan perpustakaan google.golang.org/protobuf/encoding/protojson. Pustaka ini menyediakan fungsi penyahkodan khusus untuk mesej Protobuf.
Kod yang diperbetulkan untuk menyahkod JSON ke dalam Protobuf ialah:
req := &proto.JobCreateRequest{} err := protojson.Unmarshal(bytes, req)
Pendekatan ini memastikan bahawa medan Data dinyahsiri dan dimulakan dengan betul . Ia merentasi struktur JSON secara rekursif dan cuba memberikan nilai kepada semua medan yang ditakrifkan dalam mesej Protobuf.
Atas ialah kandungan terperinci Bagaimana untuk Menyahkod JSON dengan Medan Bukan Primitif ke dalam Protobuf dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!