>  기사  >  백엔드 개발  >  정의된 데이터 구조 없이 Go에서 요청 본문에서 JSON을 읽는 방법은 무엇입니까?

정의된 데이터 구조 없이 Go에서 요청 본문에서 JSON을 읽는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-31 23:08:29602검색

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

Go의 요청 본문에서 JSON 읽기

Go에서는 POST 요청의 원시 JSON 본문을 얻는 것이 초보자에게 어려울 수 있습니다. 이는 http.Response.Body가 응답을 버퍼링하여 후속 읽기를 방지하기 때문입니다.

그러나 미리 결정된 데이터 구조에 의존하지 않고 JSON 본문을 캡처할 수 있는 해결 방법이 있습니다. 이를 달성하려면:

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

이 접근 방식은 후속 판독을 위해 원본 본문을 보존합니다.

추가 설명을 위해 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>

이것은 솔루션을 사용하면 구조를 부과하지 않고 원시 JSON 본문을 캡처할 수 있으므로 임의의 JSON 데이터를 처리해야 하는 상황에 이상적입니다.

위 내용은 정의된 데이터 구조 없이 Go에서 요청 본문에서 JSON을 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.