在呈现给jSON之前如何将Golang结构的字段修改为其他类型?

约翰·肯恩:

我们在带有w / c API的API中添加了一个include参数,客户端可以用来包含关系

// request
GET /api/events?include=team1
[{
    "id": <event_id>,
    "name": <event_name>,
    "team1": {
        "id": <team_id>,
        "name": <team_name>
    }
}]

// code
type Event struct {
    ID int64 `gorm:"primary_key" json:"id"`
    Team1ID int64 `json:"-"`
    Team1 Team `json:"team1"`
}

var event Event
Db.Preload("Team1").Find(&event, 1)
c.JSON(http.StatusOK, event)

但是我们也希望能够做到这一点:

// request
GET /api/events
[{
    "id": <event_id>,
    "name": <event_name>,
    "team1": <team1_id>
}]

现在team1字段只是一个ID。

Go中有一种简单的方法吗?

我想我可以通过使用a来做到这一点map[string]interface{},就像在db中提取事件之后,将事件结构转换为a map[string]interface{}并进行修改。但是我想知道是否有一个更简单的解决方案。

这里是我使用的尝试map[string]interface{}- https://play.golang.org/p/-19MWtqhE3该代码非常冗长。这个想法是map[string]interface{}用于每个结构,然后组成包括相关资源的顶级资源。

有什么更好的方法呢?

里卡多·甘巴(Ricardo Gamba):

实际上,您可以将team1设置为一个接口,然后将其转换为值,显然可以进行正确的验证。

type Event struct {
    ID int64 `gorm:"primary_key" json:"id"`
    Team1ID int64 `json:"-"`
    Team1 interface{} `json:"team1"`
    Team1Struct Team `json:"-"`
}

然后评估:

if value, ok := evt.Team1.(Team); ok {
    // The passed value is a Team struct
    event.Team1Struct = value
} else {
    // The passed value is a string (or something else...)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将结构转换为具有较少字段的其他结构

来自分类Dev

如何将xml字段的标签更改为.ini文件中的其他字符串?

来自分类Dev

如何将ssh更改为其他来宾

来自分类Dev

如何将时间格式更改为其他格式?

来自分类Dev

如何将REL属性更改为其他

来自分类Dev

如何将TouchableOpacity道具类型与其他字段组合

来自分类Dev

如何将ASP.Net上的问候消息从UserName更改为First Name或任何其他字段?

来自分类Dev

如何将Django REST Framework中的“结果”字段名称更改为其他名称?

来自分类Dev

如何将Tkinter窗口置于其他窗口之前?

来自分类Dev

如何将列类型从整数更改为 biginteger 而其他表在 laravel 中具有外来 id 关系?

来自分类Dev

Golang:使用其他结构分配类型

来自分类Dev

Golang将任何结构存储在其他结构字段中

来自分类Dev

Golang:如何将[] string转换为类型化的结构?

来自分类Dev

如何在golang中修改结构字段

来自分类Dev

有什么方法可以将当前日志记录修改为json格式,并添加一些其他字段python logging

来自分类Dev

如何将Elasticsearch中的类型映射修改为另一种类型

来自分类Dev

如何将Ada记录类型修改为支持两个变体的联合类型?

来自分类Dev

将数据条修改为实心填充时,如何阻止其他条件格式消失?

来自分类Dev

如何使用sed或其他工具将匹配项修改为正则表达式?

来自分类Dev

如何将现有表设置修改为自动增加 PK 字段?

来自分类Dev

如何将TYPO3 System Category description字段修改为RTE-field

来自分类Dev

如何将复杂的JSON映射到其他JSON

来自分类Dev

如何执行结构的方法,该结构是其他结构的字段

来自分类Dev

如果另一个表中不存在该值,如何将列中的字段值更改为“其他”?

来自分类Dev

如何将Model.viewset中的查找字段更改为Django Rest Framework中的其他唯一参数?

来自分类Dev

如何将颜色文本更改为冒号,然后将冒号之后的文本更改为其他颜色

来自分类Dev

PhpStorm 如何将选定的文本呈现为其他拼写?

来自分类Dev

如何将JSON文件转换为其他格式

来自分类Dev

如何将Angular2插值语法大括号更改为其他内容?

Related 相关文章

  1. 1

    如何将结构转换为具有较少字段的其他结构

  2. 2

    如何将xml字段的标签更改为.ini文件中的其他字符串?

  3. 3

    如何将ssh更改为其他来宾

  4. 4

    如何将时间格式更改为其他格式?

  5. 5

    如何将REL属性更改为其他

  6. 6

    如何将TouchableOpacity道具类型与其他字段组合

  7. 7

    如何将ASP.Net上的问候消息从UserName更改为First Name或任何其他字段?

  8. 8

    如何将Django REST Framework中的“结果”字段名称更改为其他名称?

  9. 9

    如何将Tkinter窗口置于其他窗口之前?

  10. 10

    如何将列类型从整数更改为 biginteger 而其他表在 laravel 中具有外来 id 关系?

  11. 11

    Golang:使用其他结构分配类型

  12. 12

    Golang将任何结构存储在其他结构字段中

  13. 13

    Golang:如何将[] string转换为类型化的结构?

  14. 14

    如何在golang中修改结构字段

  15. 15

    有什么方法可以将当前日志记录修改为json格式,并添加一些其他字段python logging

  16. 16

    如何将Elasticsearch中的类型映射修改为另一种类型

  17. 17

    如何将Ada记录类型修改为支持两个变体的联合类型?

  18. 18

    将数据条修改为实心填充时,如何阻止其他条件格式消失?

  19. 19

    如何使用sed或其他工具将匹配项修改为正则表达式?

  20. 20

    如何将现有表设置修改为自动增加 PK 字段?

  21. 21

    如何将TYPO3 System Category description字段修改为RTE-field

  22. 22

    如何将复杂的JSON映射到其他JSON

  23. 23

    如何执行结构的方法,该结构是其他结构的字段

  24. 24

    如果另一个表中不存在该值,如何将列中的字段值更改为“其他”?

  25. 25

    如何将Model.viewset中的查找字段更改为Django Rest Framework中的其他唯一参数?

  26. 26

    如何将颜色文本更改为冒号,然后将冒号之后的文本更改为其他颜色

  27. 27

    PhpStorm 如何将选定的文本呈现为其他拼写?

  28. 28

    如何将JSON文件转换为其他格式

  29. 29

    如何将Angular2插值语法大括号更改为其他内容?

热门标签

归档