Rumah >pembangunan bahagian belakang >Golang >Mengapakah keputusan kaedah gourl.ParseQuery sangat tidak dijangka?
Dalam pembangunan PHP, kaedah gourl.ParseQuery digunakan secara meluas untuk menghuraikan rentetan pertanyaan URL. Namun, kadangkala kita dapati hasil kaedah ini adalah di luar jangkaan dan mengelirukan. Mengapa kemalangan ini berlaku? Editor PHP Baicao akan meneroka masalah ini dalam artikel ini dan menyediakan beberapa penyelesaian. Mari lihat!
Hasil program ini ialah {"x":["1 1 3"], "y":["2", "3"]}
.
Tetapi mengapa tidak {"x":["1+1+3"], "y":["2", "3"]}
?
Apakah yang perlu saya lakukan untuk mendapatkan hasil yang diharapkan "1+1+3"
?
import ( "encoding/json" "fmt" "log" "net/url" "strings" ) func main() { m, err := url.ParseQuery(`x=1+1+3&y=2&y=3`) if err != nil { log.Fatal(err) } fmt.Println(toJSON(m)) } func toJSON(m any) string { js, err := json.Marshal(m) if err != nil { log.Fatal(err) } return strings.ReplaceAll(string(js), ",", ", ") }
Kotak pasir: https://go.dev/play/p/o0tirtvpaqk
{"x":["1+1+3"], "y":["2", "3"]}
url.parsequery
将 +
替换为
Solution
url.parsequery
Gantikan +
dengan
+
(替换为%2b
case '+': if mode == encodequerycomponent { t.writebyte(' ') } else { t.writebyte('+') }Penyelesaian adalah pengekodan🎜)🎜 🎜Seperti ini: 🎜
import ( "encoding/json" "fmt" "log" "net/url" "strings" ) func main() { m, err := url.ParseQuery(`x=1%2B1%2B3&y=2&y=3`) if err != nil { log.Fatal(err) } fmt.Println(toJSON(m)) } func toJSON(m any) string { js, err := json.Marshal(m) if err != nil { log.Fatal(err) } return strings.ReplaceAll(string(js), ",", ", ") }
Atas ialah kandungan terperinci Mengapakah keputusan kaedah gourl.ParseQuery sangat tidak dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!