Спасибо @dave, но я получаю сообщение об ошибке: ошибка времени выполнения: неверный адрес памяти или разыменование нулевого указателя

ичок в Go, но пока мне это очень нравится.

У меня есть проблема, которую я не могу понять. Я перевожу API с Node на Go, и есть этот журнал, где мне нужно захватить тело сообщения POSTКАК ЭТО и сохранить его вjsonb введите столбец в базе данных Postgresql.

Это означает, что я не могу использоватьstruct или что-нибудь предопределенное.

ПОСТ сделан с сырым теломContent-Type: application/json вот так:

{
    "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]"
            }
        }
    ]
}

На Node + Hapi довольно просто:

const payload = request.payload

и тогда я могу получить доступ к JSON изpayload.

Я использую Go с Echo, поэтомуcontext это обертка, где я могу найтиRequest() *http.Request.

Я пробовал следующее, но каждый раз, когда результат пуст или ошибка, потому что он пуст:

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

Результат: EOF

-

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

Код результата 400, сообщение EOF

-

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

Результат []

-

Что я пропускаю и / или делаю неправильно? Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос