Maison > développement back-end > Golang > Pourquoi ma réponse HTTP Go renvoie-t-elle un JSON vide avec un type de contenu texte/plain ?

Pourquoi ma réponse HTTP Go renvoie-t-elle un JSON vide avec un type de contenu texte/plain ?

Mary-Kate Olsen
Libérer: 2024-11-02 22:54:02
original
306 Les gens l'ont consulté

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

Réponses HTTP avec JSON

Lors de la création de réponses HTTP avec JSON dans Go, il est nécessaire de s'assurer que les données sont correctement formatées. Un problème qui peut survenir est une réponse vide avec un type de texte/contenu brut. Cela indique souvent un problème avec l'encodage JSON ou la structure utilisée pour représenter les données.

Dans le cas décrit dans la question, le code fourni tente d'envoyer une réponse JSON en utilisant la structure suivante :

<code class="go">type ResponseCommands struct {
    key   string
    value bool
}</code>
Copier après la connexion

Cependant, comme le souligne correctement la réponse, les variables de cette structure ne sont pas exportées, ce qui signifie qu'elles commencent par des lettres minuscules. Cela peut entraîner des problèmes avec l'encodage JSON, car les clés JSON doivent être exportées (commencez par des lettres majuscules).

Pour résoudre le problème, la structure doit être modifiée pour exporter les variables :

<code class="go">type ResponseCommands struct {
    Key   string
    Value bool
}</code>
Copier après la connexion

De plus, il est essentiel de s'assurer que l'en-tête Content-Type est défini sur application/json avant d'écrire les données de réponse. Le code suivant met à jour la fonction de gestionnaire pour inclure ce correctif :

<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>
Copier après la connexion

En apportant ces modifications, le code doit générer correctement une réponse JSON avec le type de contenu approprié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal