V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fields
V2EX  ›  问与答

gin 框架接收、解析数据的问题

  •  
  •   fields · 2023-02-01 18:23:46 +08:00 · 722 次点击
    这是一个创建于 668 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • gin 框架写了个登录接口如下:
    func (u *UserApi) Login(c *gin.Context){
    	xxxx
    }
    
    
    • 接口 body 里有三个参数,如果传入 3 个三个参数会报错,并且有一个参数字符长度超过 23 也会报错

    • 长度超过 23 报错的打印的 c 的内容如下:

    "json: unsupported type: func() (io.ReadCloser, error)"
    
    • 所以想问问有没有遇到过类似的问题,有朋友试了下他们的是正常的,接手的别人的代码所以想问下是否有加限制,如果加了可能会是在哪里加的?
    4 条回复    2023-02-01 22:20:51 +08:00
    stevenshuang
        1
    stevenshuang  
       2023-02-01 18:55:12 +08:00 via iPhone
    这个得看你的 body 是什么样子了,看报错,里面出现了不支持序列化的类型。你可能需要对这个类型自己实现 Json 的接口。
    arvin01
        2
    arvin01  
       2023-02-01 19:34:48 +08:00
    什么信息都没给出,不好分析。

    看到涉及 json ,建议把 json 相关的类,body 数据示例,调用的哪个解析函数列一下,或者直接帖完整的代码(移除敏感的部分)
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       2023-02-01 20:22:16 +08:00
    gin 使用 Context.ShouldBindJson/BindJson 这样的函数自动反序列化请求中的 json 参数。你可以查看被 bound to 的对象的结构,里面的 struct tag 会指示如何从 json 反序列化
    fields
        4
    fields  
    OP
       2023-02-01 22:20:51 +08:00 via iPhone
    @stevenshuang 就是一个 json 类型 三个参数的值都是字符串类型 {“a”:“a”,“b”:“b”,“c”:“c”} 类似这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:15 · PVG 20:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.