Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Isu Medan Data Null Apabila Menyahmarshaling JSON ke Protobuf Struct?

Bagaimana untuk Menyelesaikan Isu Medan Data Null Apabila Menyahmarshaling JSON ke Protobuf Struct?

Barbara Streisand
Barbara Streisandasal
2024-10-28 07:30:02538semak imbas

How to Resolve Null Data Field Issue When Unmarshaling JSON to Protobuf Struct?

Menyahmarshall JSON ke Protobuf Struct Field: Menyelesaikan Data Field Null Issue

Apabila cuba unmarshal JSON data ke dalam protobuf struct field jenis google .protobuf.Value, anda mungkin menghadapi situasi di mana medan Data dalam struct protobuf ditetapkan kepada sifar. Isu ini timbul disebabkan oleh ketidakserasian antara pengekodan/pakej json perpustakaan standard dan keperluan khusus medan Nilai protobuf.

Untuk menyelesaikan masalah ini, perpustakaan yang lebih sesuai harus digunakan untuk unmarshaling. Pustaka protobuf Google menyediakan pendekatan yang lebih mantap dan disesuaikan untuk mengendalikan jenis data khusus protobuf. Berikut ialah kod yang diperbetulkan menggunakan protojson.Unmarshal:

<code class="go">import (
    "google.golang.org/protobuf/encoding/protojson"
    "google.golang.org/protobuf/proto"
    "io"
)

req := &proto.JobCreateRequest{}
bytes, err := io.ReadAll(r.Body)
if err != nil {
    return err
}
err = protojson.Unmarshal(bytes, req)
if err != nil {
    return err
}</code>

Dengan memanfaatkan protojson.Unmarshal dan bukannya pakej pengekodan/json, anda boleh menukar data JSON ke dalam struktur protobuf dengan berkesan, memastikan medan Data adalah betul berpenduduk. Struktur JobCreateRequest yang terhasil akan mengandungi nilai yang dijangkakan untuk nama, perihalan dan medan data.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Medan Data Null Apabila Menyahmarshaling JSON ke Protobuf Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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