Como obter o JSON do corpo de uma solicitação on Go

Sou novato no Go, mas até agora estou gostando muito.

Eu tenho um problema que não consigo descobrir. Estou migrando uma API do Node to Go e existe esse log em que tenho que capturar o corpo de um POSTCOMO ISSO É e salve-o em umjsonb digite a coluna em um banco de dados Postgresql.

Isso significa que não posso usar umstruct ou qualquer coisa predeterminada.

O POST é feito com o corpo cruContent-Type: application/json igual a:

{
    "debug": false,
    "order_id_gea": 326064,
    "increment_id_gea": 200436102,
    "date": "2017-05-18T01:44:44+00:00",
    "total_amount": 10000.00,
    "currency": "MXN",
    "payment_method": "Referencia bancaria",
    "reference": "857374",
    "buyer": {
        "buyer_id_gea": 1234,
        "full_name": "Juan Perez Martinez",
        "email": "[email protected]",
        "phone": "5512341234"
    },
    "products": [
        {
            "sku":"PEP16114",
            "price": 10000.00,
            "currency": "MXN",
            "student": {
                "school_id_gea": 172,
                "grade_id_gea": 119,
                "level_id_gea": 36,
                "name": "Benancio",
                "last_name": "Perez",
                "second_last_name": "Garcia",
                "email": "[email protected]"
            }
        }
    ]
}

No Node + Hapi é bastante simples:

const payload = request.payload

e então eu posso acessar o JSON depayload.

Estou usando o Go with Echo, entãocontext é um invólucro onde posso encontrarRequest() *http.Request.

Eu tentei o seguinte, mas sempre que o resultado está vazio ou um erro porque está vazio:

var v interface{}
err := json.NewDecoder(context.Request().Body).Decode(&v)
if err != nil {
    return result, err
}
fmt.Println(v)

Resultado: EOF

-

m := echo.Map{}
if err := context.Bind(&m); err != nil {
    return result, err
}
fmt.Println(m)

Código de resultado 400, mensagem EOF

-

body, error := ioutil.ReadAll(context.Request().Body)
if error != nil {
    return result, error
}
fmt.Println(body)

Resultado []

-

O que estou perdendo e / ou fazendo errado? Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion