Di golang, semasa memproses permintaan berkod x-www-form-urlencode dalam format JSON, kadangkala anda menemui pasangan nilai kunci bersarang. Editor PHP Baicao menyediakan penyelesaian untuk semua orang. Dengan menggunakan fungsi json.Unmarshal untuk menghuraikan badan permintaan ke dalam jenis peta[rentetan]antara muka{} dan kemudian dapatkan nilai pasangan nilai kunci bersarang melalui penegasan jenis dan penukaran jenis. Kaedah ini mudah dan berkesan serta boleh membantu pembangun mengendalikan permintaan sedemikian dengan mudah. Seterusnya, kami akan memperkenalkan langkah-langkah pelaksanaan khusus secara terperinci.
Saya mempunyai kes penggunaan di mana kita mendapat nilai kunci bersarang dalam x-www-form-urlencoded
badan seperti yang ditunjukkan di bawah
name=abc&age=12¬es[key1]=value1¬es[key2]=value2
Saya mencuba url.parsequery("name=abc&age=12¬es[key1]=value1¬es[key2]=value2")
tetapi ia memberi
{ "name": "abc", "age": 12, "notes[key1]": "value1", "notes[key2]": "value2" }
Bagaimana untuk mendapatkan nilai dalam format json berikut untuk teks di atas
{ "name": "abc", "age": 12, "notes": { "key1": "value1", "key2": "value2" } }
Komen mungkin dalam format bersarang 3 peringkat
Saya mencuba url.parsequery
dan r.form
tetapi kedua-duanya memberikan notes[key1]
dan notes[key2] </code >. Penyelesaian <code>derekstavis/go -qs
url.parsequery
和 r.form
但它们都给出了 notes[key1]
和 notes[key2]
。
要使用这种类型的查询字符串参数名称解组嵌套键值,可以使用 derekstavis/go -qs
Ini ialah port penghurai rentetan pertanyaan rak.
dengan nilai kunci bersarang berikut. map[string]interface{}
adalah sama. Pakej ini boleh dicabang dan diubah suai jika ia perlu disusun menjadi integer. age
的值作为字符串返回,但是,这对于 url.parsequery
{ "age": "12", "name": "abc", "notes": { "key1": "value1", "key2": "value2" } }
pergi URL taman permainan:
//m.sbmmt.com/link/0fc780bb04e74ce5ed154d2e49cfe2fd
package main import ( "encoding/json" "fmt" "log" qs "github.com/derekstavis/go-qs" ) func main() { v := "name=abc&age=12¬es[key1]=value1¬es[key2]=value2" q, err := qs.Unmarshal(v) if err != nil { log.Fatal(err) } j, err := json.MarshalIndent(q, "", " ") if err != nil { log.Fatal(err) } fmt.Println(string(j)) }
Atas ialah kandungan terperinci Dapatkan pasangan nilai kunci bersarang bagi permintaan x-www-form-urlencoded dalam format JSON dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!