Wie lese ich JSON aus dem Anforderungstext in Go ohne definierte Datenstrukturen?

Susan Sarandon
Freigeben: 2024-10-31 23:08:29
Original
601 Leute haben es durchsucht

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

JSON aus dem Anforderungstext in Go lesen

In Go kann es für Anfänger eine Herausforderung sein, den rohen JSON-Text einer POST-Anfrage zu erhalten. Dies liegt daran, dass http.Response.Body Antworten puffert und nachfolgende Lesevorgänge verhindert.

Es gibt jedoch eine Problemumgehung, um JSON-Bodys zu erfassen, ohne sich auf vorgegebene Datenstrukturen zu verlassen. Um dies zu erreichen:

<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>
Nach dem Login kopieren

Dieser Ansatz bewahrt den Originaltext für spätere Lesungen.

Zur weiteren Veranschaulichung hier ein Beispiel mit dem Echo-Framework:

<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>
Nach dem Login kopieren

Dies Mit der Lösung können Sie den rohen JSON-Körper ohne auferlegte Struktur erfassen, was sie ideal für Situationen macht, in denen Sie beliebige JSON-Daten verarbeiten müssen.

Das obige ist der detaillierte Inhalt vonWie lese ich JSON aus dem Anforderungstext in Go ohne definierte Datenstrukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!