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"

我究竟做错了什么?

4

2 回答 2

8

您需要通过以大写字符开头的名称来导出ErrorJson 中的字段。使用字段标签指定输出中的小写名称。

type ErrorJson struct {
    S string `json:"s"`
    D string `json:"d"`
}

encoding/json 包和类似的包会忽略未导出的字段。

于 2015-12-07T05:58:15.900 回答
1

golang 中的s& , 小写是不可见的。d

于 2016-01-05T02:52:28.893 回答