Bagaimana untuk menggunakan parameter JSON yang tidak diperlukan dalam Go?

王林
Lepaskan: 2024-02-12 09:10:08
ke hadapan
931 orang telah melayarinya

如何在 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"`
Salin selepas log masuk

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)
}
Salin selepas log masuk

Output (cuba di

Go Playground

):

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!