editor php Yuzai membawakan anda petua tentang cara menggunakan parameter JSON yang tidak diperlukan dalam bahasa Go. Semasa menulis program Go, kita selalunya perlu memproses data JSON Kadangkala kita mungkin hanya perlu menggunakan beberapa parameter, tetapi bukan kesemuanya. Artikel ini akan memperkenalkan cara menggunakan parameter JSON yang tidak diperlukan dalam Go, membolehkan anda memproses data JSON dengan lebih fleksibel dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan memberikan anda petua berguna dan kod contoh untuk membantu anda memahami dan menggunakan ciri ini dengan lebih baik. Mari kita meneroka bersama-sama!
Helo, saya sedang membangunkan Rest API dalam Go dan saya mahu pengguna melepasi parameter JSON:
Offset int64 `json:"offset"` Limit int64 `json:"limit"` SortBy string `json:"sortby"` Asc bool `json:"asc"` Username string `json:"username"` First_Name string `json:"first_name"` Last_Name string `json:"last_name"` Status string `json:"status"`
Tetapi ia tidak selalu diperlukan, contohnya pengguna hanya boleh menghantar Offset
dan mengabaikan yang lain. Dia juga boleh menghantar 0 parameter. Bagaimana saya boleh melakukan ini? Penyelesaian JSON , tiada jaminan bahawa semua medan JSON mempunyai medan Go yang sepadan. Offset
并忽略其他。他甚至可以发送0个参数。我怎样才能做到这一点?
从 JSON 文本中解组值时,json
Jadi tiada apa yang istimewa untuk anda lakukan, cuma susun apa yang anda ada ke dalam nilai Gountuk perkara yang anda mahu atau mungkin mahu.
Satu perkara yang perlu diambil perhatian ialah jika medan tiada daripada teks JSON, pakej
tidak akan menukar medan Go yang sepadan, jadi jika ia bermula dengan "segar",nilai sifarjson
, medan itu akan mengekalkan nilai sifar jenisnya.
Kebanyakan masa ini sudah cukup untuk mengesan jika medan (dalam JSON) wujud, contohnya jika dalam struct Go anda mempunyai
string
类型的 SortBy
字段,如果 JSON 中缺少该字段,它将保留空 string
: ""
Jika nilai sifar berguna dan sah, maka anda boleh beralih kepada menggunakan penunjuk. Contohnya, jika dalam aplikasi anda, null
string
将是有效的 SortBy
值,您可以将此字段声明为指针:*string
。在这种情况下,如果 JSON 文本中缺少它,它将保留 nil
Lihat contoh ini:
type Data struct { I int S string P *string } func main() { var d Data var err error d, err = Data{}, nil err = json.Unmarshal([]byte(`{"I":1, "S":"sv", "P":"pv"}`), &d) fmt.Printf("%#v %v\n", d, err) d, err = Data{}, nil err = json.Unmarshal([]byte(`{"I":1}`), &d) fmt.Printf("%#v %v\n", d, err) d, err = Data{}, nil err = json.Unmarshal([]byte(`{"S":"abc"}`), &d) fmt.Printf("%#v %v\n", d, err) }
Output (cuba di
Go Playground