ホームページ  >  記事  >  バックエンド開発  >  Go HTTP 応答がテキスト/プレーン コンテンツ タイプの空の JSON を返すのはなぜですか?

Go HTTP 応答がテキスト/プレーン コンテンツ タイプの空の JSON を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 22:54:02229ブラウズ

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

JSON を使用した HTTP 応答

Go で JSON を使用した HTTP 応答を作成する場合、データが正しい形式であることを確認する必要があります。発生する可能性のある問題の 1 つは、テキスト/プレーン コンテンツ タイプの空の応答です。これは多くの場合、JSON エンコーディングまたはデータを表すために使用される構造体に問題があることを示しています。

質問で説明されているケースでは、提供されたコードは次の構造体を使用して JSON 応答を送信しようとします:

<code class="go">type ResponseCommands struct {
    key   string
    value bool
}</code>

ただし、答えが正しく指摘しているように、この構造体の変数はエクスポートされません。つまり、変数は小文字で始まります。 JSON キーはエクスポートされることが想定されているため (大文字で始まる)、JSON エンコーディングで問題が発生する可能性があります。

問題を解決するには、変数をエクスポートするように構造体を変更する必要があります:

<code class="go">type ResponseCommands struct {
    Key   string
    Value bool
}</code>

さらに、応答データを書き込む前に、Content-Type ヘッダーが application/json に設定されていることを確認することが重要です。次のコードは、この修正を含めるためにハンドラー関数を更新します。

<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>

これらの変更を加えることで、コードは適切なコンテンツ タイプの JSON 応答を正しく生成するはずです。

以上がGo HTTP 応答がテキスト/プレーン コンテンツ タイプの空の JSON を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。