Erhalten Sie verschachtelte Schlüssel-Wert-Paare von x-www-form-urlencoded-Anfragen im JSON-Format in Golang

王林
Freigeben: 2024-02-09 15:15:08
nach vorne
494 Leute haben es durchsucht

Erhalten Sie verschachtelte Schlüssel-Wert-Paare von x-www-form-urlencoded-Anfragen im JSON-Format in Golang

In Golang stoßen Sie bei der Verarbeitung von x-www-form-urlencoded-Anfragen im JSON-Format manchmal auf verschachtelte Schlüssel-Wert-Paare. Der PHP-Editor Baicao bietet für jeden eine Lösung. Mithilfe der Funktion json.Unmarshal wird der Anforderungstext in den Typ „map[string]interface{}“ analysiert und anschließend der Wert des verschachtelten Schlüssel-Wert-Paares durch Typzusicherung und Typkonvertierung abgerufen. Diese Methode ist einfach und effektiv und kann Entwicklern dabei helfen, solche Anfragen problemlos zu bearbeiten. Als nächstes werden wir die spezifischen Implementierungsschritte im Detail vorstellen.

Frageninhalt

Ich habe einen Anwendungsfall, bei dem wir verschachtelte Schlüsselwerte im x-www-form-urlencoded ​​Textkörper erhalten, wie unten gezeigt

name=abc&age=12&notes[key1]=value1&notes[key2]=value2

Ich habe es versucht url.parsequery("name=abc&age=12&notes[key1]=value1&notes[key2]=value2"), aber es hat geklappt

{
  "name": "abc",
  "age": 12,
  "notes[key1]": "value1",
  "notes[key2]": "value2"
}
Nach dem Login kopieren

So erhalten Sie den Wert im folgenden JSON-Format für den obigen Text

{
  "name": "abc",
  "age": 12,
  "notes": {
    "key1": "value1",
    "key2": "value2"
  }
}
Nach dem Login kopieren

Kommentare können im 3-Ebenen-verschachtelten Format vorliegen

Ich habe url.parsequery und r.form ausprobiert, aber beide geben notes[key1] und notes[key2] </code >. <code>url.parsequeryr.form 但它们都给出了 notes[key1]notes[key2]

解决方法

要使用这种类型的查询字符串参数名称解​​组嵌套键值,可以使用 derekstavis/go -qsProblemumgehung

Um verschachtelte Schlüsselwerte mit diesem Typ von Abfragezeichenfolge-Parameternamen zu entmarshalieren, können Sie verwenden derekstavis/go -qsmap[string]interface{} Dies ist ein Port des Rack-Query-String-Parsers.

Dies gibt ein age 的值作为字符串返回,但是,这对于 url.parsequery mit den folgenden verschachtelten Schlüsselwerten zurück.

Es ist erwähnenswert, dass

dasselbe ist. Dieses Paket kann geforkt und geändert werden, wenn es in Ganzzahlen gemarshallt werden muss.

{
  "age": "12",
  "name": "abc",
  "notes": {
    "key1": "value1",
    "key2": "value2"
  }
}
Nach dem Login kopieren
Ein vollständiges Beispiel ist auf dem Go-Playground verfügbar, der Code lautet wie folgt:

go-Spielplatz-URL: 🎜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))
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonErhalten Sie verschachtelte Schlüssel-Wert-Paare von x-www-form-urlencoded-Anfragen im JSON-Format in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage