JSON Beego 控制器中的响应

JSON Response in Beego Controller

我是 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"

我做错了什么?

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

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

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

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