Maison > développement back-end > Golang > le corps du texte

Comment lire JSON à partir du corps de la requête en Go sans structures de données définies ?

Susan Sarandon
Libérer: 2024-10-31 23:08:29
original
684 Les gens l'ont consulté

How to Read JSON from Request Body in Go Without Defined Data Structures?

Lecture du JSON à partir du corps de la requête dans Go

Dans Go, obtenir le corps JSON brut d'une requête POST peut être un défi pour les débutants. En effet, http.Response.Body met en mémoire tampon les réponses, empêchant les lectures ultérieures.

Cependant, il existe une solution de contournement pour capturer les corps JSON sans s'appuyer sur des structures de données prédéterminées. Pour y parvenir :

<code class="go">// Capture the body bytes
bodyBytes, _ := ioutil.ReadAll(context.Request().Body)

// Restore the response body
context.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

// Decode the JSON
var v interface{}
err := json.NewDecoder(context.Request().Body).Decode(&v)
if err != nil {
    return result, err
}</code>
Copier après la connexion

Cette approche préserve le corps d'origine pour les lectures ultérieures.

Pour démontrer davantage, voici un exemple utilisant le framework Echo :

<code class="go">func myHandler(c echo.Context) error {
    // Capture the body bytes
    bodyBytes, _ := ioutil.ReadAll(c.Request().Body)

    // Restore the response body
    c.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

    // Decode the JSON
    var payload map[string]interface{}
    err := json.NewDecoder(c.Request().Body).Decode(&payload)
    if err != nil {
        return c.JSON(http.StatusBadRequest, "Invalid JSON provided")
    }

    // Use the decoded payload
    return c.JSON(http.StatusOK, payload)
}</code>
Copier après la connexion

Ceci La solution vous permet de capturer le corps JSON brut sans aucune structure imposée, ce qui la rend idéale pour les situations où vous devez gérer des données JSON arbitraires.

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