Heim >Backend-Entwicklung >Golang >Warum gibt meine Go-HTTP-Antwort ein leeres JSON mit dem Inhaltstyp „Text/Plain' zurück?

Warum gibt meine Go-HTTP-Antwort ein leeres JSON mit dem Inhaltstyp „Text/Plain' zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 22:54:02258Durchsuche

Why Does My Go HTTP Response Return an Empty JSON with Text/Plain Content Type?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn