Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan parameter JSON yang tidak diperlukan dalam Go?

Bagaimana untuk menggunakan parameter JSON yang tidak diperlukan dalam Go?

王林
王林ke hadapan
2024-02-12 09:10:08931semak imbas

如何在 Go 中使用非必需的 JSON 参数?

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!

Kandungan soalan

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 Go​​​untuk 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

, nilai sifar bagi sebarang jenis penunjuk.

string 将是有效的 SortBy 值,您可以将此字段声明为指针:*string。在这种情况下,如果 JSON 文本中缺少它,它将保留 nilLihat 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

):

main.Data{I:1, S:"sv", P:(*string)(0x1050a150)} <nil>
main.Data{I:1, S:"", P:(*string)(nil)} <nil>
main.Data{I:0, S:"abc", P:(*string)(nil)} <nil>

Atas ialah kandungan terperinci Bagaimana untuk menggunakan parameter JSON yang tidak diperlukan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam