V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
LotteWong
V2EX  ›  Go 编程语言

请教一个 gin 绑定 json 时忽略为空字段的问题

  •  
  •   LotteWong · 2020-10-14 21:16:47 +08:00 · 3242 次点击
    这是一个创建于 1501 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以下字段 name, description, maxBandwidthIn 和 maxBandwidthOut 都不是必选的,我希望前端没有传过来的字段在结构体中也可以被忽略。以下是我写的有问题的代码,不知道各位大佬平时都是怎么处理这样的需求呢🤔还望大家多多指教(((蟹蟹~

    
    type UpdateModel struct {
    	Name       		string `json:"name" binding:"omitempty"`
    	Description     string `json:"description" binding:"omitempty"`
    	MaxBandwidthIn  int    `json:"maxBandwidthIn" binding:"omitempty"`
    	MaxBandwidthOut int    `json:"maxBandwidthOut" binding:"omitempty"`
    }
    
    
    func UpdateItem(context *gin.Context) {
    	var req UpdateModel // 初始化结构体,所有字段赋默认值,binding:"omitempty"不起作用 
        
        if err = context.BindJSON(&req); err != nil {
    		context.JSON( http.StatusBadRequest, err.Error())
    		return
    	}
        
        ...
    }
    
    
    6 条回复    2020-10-15 10:47:31 +08:00
    mason961125
        1
    mason961125  
       2020-10-14 21:20:10 +08:00
    tiedan
        2
    tiedan  
       2020-10-14 22:30:09 +08:00
    字段用指针,判断指针是不是 nil
    wleven
        3
    wleven  
       2020-10-15 09:27:26 +08:00
    `json:"maxBandwidthOut,omitempty"
    LotteWong
        4
    LotteWong  
    OP
       2020-10-15 09:45:02 +08:00
    @mason961125
    @tiedan
    非常感谢~
    LotteWong
        5
    LotteWong  
    OP
       2020-10-15 09:45:19 +08:00
    @wleven 这个试过了也不起作用( sad.jpg
    wleven
        6
    wleven  
       2020-10-15 10:47:31 +08:00
    如果用 gorm 的话入库可以忽略空值
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:59 · PVG 04:59 · LAX 12:59 · JFK 15:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.