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 サイトの他の関連記事を参照してください。