Dapatkan pasangan nilai kunci bersarang bagi permintaan x-www-form-urlencoded dalam format JSON dalam golang

王林
Lepaskan: 2024-02-09 15:15:08
ke hadapan
491 orang telah melayarinya

Dapatkan pasangan nilai kunci bersarang bagi permintaan x-www-form-urlencoded dalam format JSON dalam golang

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.

Kandungan soalan

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&notes[key1]=value1&notes[key2]=value2

Saya mencuba url.parsequery("name=abc&age=12&notes[key1]=value1&notes[key2]=value2") tetapi ia memberi

{
  "name": "abc",
  "age": 12,
  "notes[key1]": "value1",
  "notes[key2]": "value2"
}
Salin selepas log masuk

Bagaimana untuk mendapatkan nilai dalam format json berikut untuk teks di atas

{
  "name": "abc",
  "age": 12,
  "notes": {
    "key1": "value1",
    "key2": "value2"
  }
}
Salin selepas log masuk

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 -qsurl.parsequeryr.form 但它们都给出了 notes[key1]notes[key2]

解决方法

要使用这种类型的查询字符串参数名称解​​组嵌套键值,可以使用 derekstavis/go -qs Ini ialah port penghurai rentetan pertanyaan rak.

Ini mengembalikan

dengan nilai kunci bersarang berikut. map[string]interface{}

Perlu diingat bahawa

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

Contoh lengkap boleh didapati di taman permainan, kodnya adalah seperti berikut:

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&notes[key1]=value1&notes[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))
}
Salin selepas log masuk

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!

Label berkaitan:
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