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

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

王林
王林nach vorne
2024-02-09 15:15:08495Durchsuche

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

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

{
  "name": "abc",
  "age": 12,
  "notes": {
    "key1": "value1",
    "key2": "value2"
  }
}

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen