this.input.get() не работает

1package main

import (
	"database/sql"

	"flag"
	"fmt"

	"github.com/astaxie/beego"
)

type User struct {
	username string
	password string
}type MainController struct {
	beego.Controller
}

func (this *MainController) Post() {
	this.Ctx.WriteString("hello world")
	result := this.Input()
	fmt.Println("eedwedwe", this.Input().Get("username"))
	fmt.Println("input value is", result)
	fmt.Println("eedwedwe", result.Get("Username"))
	send := User{username: "vijay", password: "vk18"}
	this.Data["json"] = &send
	this.ServeJSON()
}

func main() {

	beego.Router("/", &MainController{})
	beego.Run()

}

и запрос выглядит следующим образом curl -X POST http://localhost:8080/ -d '{"username" : "admin", "пароль":"admin"}'

после того, как запрос попал на сервер beego, я пытаюсь получить доступ к имени пользователя в запросе, но он показывает пустое

и выход есть

2017/02/17 12:56:59 [I] [asm_amd64.s:2086] http server Running on http://:8080
eedwedwe 
input value is map[{"username" : "admin", "password":"admin"}:[]]
eedwedwe 


person gophervk    schedule 17.02.2017    source источник


Ответы (2)


Объявленная структура в вашем коде, указанном ниже, введите User struct {username string password string}

Чтобы получить доступ к значениям структурных значений, первым символом должен быть Capital.example, приведенный ниже. type User struct { Строка имени пользователя Строка пароля }

А для кодирования и декодирования json используются функции json.Unmarshal(), json.Marshal().

person user2737515    schedule 20.02.2017
comment
Была такая же проблема, подсказка в верхнем регистре сработала, спасибо! - person Abu; 05.07.2017

вам нужно удалить данные json из тела запроса, подробнее см. здесь

e.g:

u := &User{}
err:= json.Unmarshal(this.Ctx.Input.RequestBody, u)
person ysqi    schedule 21.02.2017