HTTP-Antworten mit JSON
Beim Erstellen von HTTP-Antworten mit JSON in Go muss sichergestellt werden, dass die Daten korrekt formatiert sind. Ein Problem, das auftreten kann, ist eine leere Antwort mit einem Text-/einfachen Inhaltstyp. Dies weist häufig auf ein Problem mit der JSON-Kodierung oder der zur Darstellung der Daten verwendeten Struktur hin.
Im in der Frage beschriebenen Fall versucht der bereitgestellte Code, eine JSON-Antwort mithilfe der folgenden Struktur zu senden:
<code class="go">type ResponseCommands struct { key string value bool }</code>
Wie die Antwort jedoch richtig zeigt, werden die Variablen in dieser Struktur nicht exportiert, was bedeutet, dass sie mit Kleinbuchstaben beginnen. Dies kann zu Problemen mit der JSON-Codierung führen, da erwartet wird, dass JSON-Schlüssel exportiert werden (beginnen Sie mit Großbuchstaben).
Um das Problem zu beheben, sollte die Struktur geändert werden, um die Variablen zu exportieren:
<code class="go">type ResponseCommands struct { Key string Value bool }</code>
Außerdem muss unbedingt sichergestellt werden, dass der Content-Type-Header auf application/json gesetzt ist, bevor die Antwortdaten geschrieben werden. Der folgende Code aktualisiert die Handler-Funktion, um diesen Fix einzuschließen:
<code class="go">func handler(rw http.ResponseWriter, req *http.Request) { responseBody := ResponseCommands{"BackOff", false} data, err := json.Marshal(responseBody) if err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } rw.WriteHeader(200) rw.Header().Set("Content-Type", "application/json") rw.Write(data) }</code>
Durch diese Änderungen sollte der Code korrekt eine JSON-Antwort mit dem entsprechenden Inhaltstyp generieren.
Das obige ist der detaillierte Inhalt vonWarum gibt meine Go-HTTP-Antwort ein leeres JSON mit dem Inhaltstyp „Text/Plain' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!