Beego控制器中的JSON响应

4

我是beego的新手,正在尝试在一个路由上获取JSON响应。

我定义了一个控制器如下。

package controllers

import (
    "github.com/astaxie/beego"
)

type ErrorController struct {
    beego.Controller
}

type ErrorJson struct {
    s string
    d string
}

func (this *ErrorController) Get() {

    var responseJson ErrorJson
    responseJson = ErrorJson{
        s: "asdf",
        d: "qwer",
    }

    this.Data["json"] = responseJson
    this.ServeJson()
}

我的路由器被定义为

beego.Router("/api", &controllers.ErrorController{})

当我访问该路由时,我会得到一个没有任何属性的空JSON对象。
{}

如果我将json结构替换为字符串,就能获得响应。因此beego知道控制器和方法。
this.Data["json"] = "Hello World"

我做错了什么?


1
可能是重复的问题:Go json.Marshal(struct)返回“{}” - Charlie Tumahai
这里有同样的问题: https://dev59.com/J2sy5IYBdhLWcg3w3Rvc - Bruce
2个回答

9
你需要通过将名称以大写字母开头来导出 ErrorJson 中的字段。使用字段标签来指定输出中的小写名称。
type ErrorJson struct {
    S string `json:"s"`
    D string `json:"d"`
}

encoding/json包及其类似的包会忽略未公开的字段。


1

sd在golang中是小写的,但不可见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接