Heim >Backend-Entwicklung >Golang >golang: So entfernen Sie Leerzeichen und Zeilenumbrüche im Anfragetext

golang: So entfernen Sie Leerzeichen und Zeilenumbrüche im Anfragetext

WBOY
WBOYnach vorne
2024-02-06 11:00:04720Durchsuche

golang: So entfernen Sie Leerzeichen und Zeilenumbrüche im Anfragetext

Frageninhalt

Ich habe das Gin-Framework verwendet, um einen Webdienst (Golang) zu schreiben, um Parameter im JSON-Body-Format zu empfangen. Ich stelle diese Bitte:

curl --location 'http://foo.bar/test' \
--header 'content-type: application/json' \
--data'{
     "a": "1",
     "b": "2"
}'

Jetzt habe ich eine Middleware hinzugefügt, die alle Anforderungsparameter in einer Protokolldatei ausgibt, die eine Ebene über dem Controller ausgeführt wird. Beachten Sie, dass die Middleware-Schicht die spezifischen Parametertypen nicht kennt. Wenn ich den Text lese und das Protokoll ausdrucke, erhalte ich das folgende Ergebnis:

[2023/06/20 11:44:38 cst] [info] (.../infra/log.info:18) request_in||traceid=xx||spanid=xxx||path=/test||body= {
     "a": "1",
     "b": "2"
}

Ich habe so etwas erwartet:

[2023/06/20 11:44:38 CST] [INFO] (/infra/log.Info:18) request_in||traceid=xx||spanid=xxx||path=/test||body={"a ":"1","b":"2"}

Entschuldigung: Wie entferne ich Leerzeichen und Zeilenumbrüche im Text? Beachten Sie, dass der Körperparameter in diesem Beispiel relativ einfach ist, die tatsächliche Situation jedoch komplexer sein wird. Danke.


Richtige Antwort


Mit der folgenden Methode können Sie Leerzeichen und Zeilenumbrüche im Text ersetzen.

Verwenden Sie strings.replaceall()

requestbodybytes, err := c.getrawdata()
if err != nil {
  // handle this
}

body := string(requestbodybytes)
body = strings.replaceall(body, "\n", "")
body = strings.replaceall(body, " ", "")

fmt.printf("body=%v \n", body)

Sie können diese Methode verwenden, wenn Sie den Anforderungstext ändern müssen, indem Sie Leerzeichen und Zeilen entfernen, bevor Sie den Controller erreichen.

Gruppierung verwenden

requestBodyBytes, err := c.GetRawData()
if err != nil {
  // Handle this
}

var data interface{}
json.Unmarshal(requestBodyBytes, &data)

marshalledBytes, err := json.Marshal(data)
if err != nil {
  // Handle this
}
fmt.Printf("body=%v \n", string(marshalledBytes))

Verwenden Sie diese Funktion, wenn Sie für die Aufnahme nur Leerzeichen und Zeilen entfernen müssen.

Das obige ist der detaillierte Inhalt vongolang: So entfernen Sie Leerzeichen und Zeilenumbrüche im Anfragetext. 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