Maison >développement back-end >Golang >Pourquoi les résultats de la méthode gourl.ParseQuery sont-ils si inattendus ?
Dans le développement PHP, la méthode gourl.ParseQuery est largement utilisée pour analyser les chaînes de requête d'URL. Cependant, nous constatons parfois que les résultats de cette méthode sont inattendus et déroutants. Pourquoi cet accident se produit-il ? L'éditeur PHP Baicao explorera ce problème dans cet article et proposera quelques solutions. Nous allons jeter un coup d'oeil!
Le résultat de ce programme est {"x":["1 1 3"], "y":["2", "3"]}
.
Mais pourquoi pas {"x":["1+1+3"], "y":["2", "3"]}
?
Que dois-je faire pour obtenir les résultats attendus "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), ",", ", ") }
Bac à sable : https://go.dev/play/p/o0tirtvpaqk
{"x":["1+1+3"], "y":["2", "3"]}
url.parsequery
将 +
替换为
Solution
url.parsequery
Remplacez +
par
+
(替换为%2b
case '+': if mode == encodequerycomponent { t.writebyte(' ') } else { t.writebyte('+') }La solution est l'encodage🎜)🎜 🎜Comme ça : 🎜
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), ",", ", ") }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!