【问题标题】:Json Response showing empty values in beego Contoller在beego控制器中显示空值的Json响应
【发布时间】:2021-12-12 20:05:43
【问题描述】:

我有两个数据库表。我想通过 mysql 查询从这些表中获取值并将其传递给控制器​​。在那里我将它绑定一个结构并将 json 值显示为对控制器的响应。但问题是两个表之间有一些不常见的列,但我必须使用公共结构中的每个字段。当我得到一个表的响应时,其他表的字段在 json 对象中显示为空,反之亦然。如何只显示每个 json 对象中的相关字段?

代码:

型号:

type Student struct {
    StudentId int 
    Name string 
    Address string 
}

type Teacher struct {
    TeacherId int 
    Name string
    Address string 
    Department string 
}

type TeacherStudent struct {
    StudentId int 
    Name string 
    Address string 
    TeacherId int 
    Department string 
}

控制器:

json.Unmarshal([]byte(datas), &ts)
    c.Data["json"] = ts
    c.ServeJSON()

Postman 中的响应:

[
    {
        "StudnetId": 501,
        "Name": Mark,
        "Address": Canbera,
        "TeacherId": 0,
        "Deparment": ""
    },
    {
        "StudnetId": 0,
        "Name": John,
        "Address": Melbourne,
        "TeacherId": 101,
        "Deparment": "Science"
    
    }]

对于Studnet Response,我不想显示TeacherId 和Department,对于Teacher Record,我不想在json 对象中显示StudentId。

【问题讨论】:

    标签: rest go beego


    【解决方案1】:

    您也可以将json:"-" 用于您想要的空字段。

    【讨论】:

      【解决方案2】:

      解决方案是使用json:"omitempty" 参考这篇文章:https://www.sohamkamani.com/golang/omitempty/

      注意:json:"omitempty" 仅适用于字段。它不适用于结构内部的结构。它也不适用于 time.Time 字段。参考本文处理time.Time问题:JSON omitempty With time.Time Field

      【讨论】:

        猜你喜欢
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-27
        • 2018-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多