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.
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¬es[key1]=value1¬es[key2]=value2
Ich habe es versucht url.parsequery("name=abc&age=12¬es[key1]=value1¬es[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] </code >. <code>url.parsequery
和 r.form
但它们都给出了 notes[key1]
和 notes[key2]
。
要使用这种类型的查询字符串参数名称解组嵌套键值,可以使用 derekstavis/go -qs
Problemumgehung
Um verschachtelte Schlüsselwerte mit diesem Typ von Abfragezeichenfolge-Parameternamen zu entmarshalieren, können Sie verwenden derekstavis/go -qs
map[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" } }
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)) }
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!