Rumah >pembangunan bahagian belakang >Golang >Dapatkan pasangan nilai kunci bersarang bagi permintaan x-www-form-urlencoded dalam format JSON dalam golang

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

王林
王林ke hadapan
2024-02-09 15:15:08528semak imbas

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"
}

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] . Penyelesaian 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"
  }
}

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

pergi URL taman permainan:

https://www.php.cn/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))
}

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!

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