dongshu7162 2016-08-26 07:33
浏览 607
已采纳

使用`encoding / json`的默认值golang结构?

How to set default value for Encoding as "base64"?

type FileData struct {
    UID string `json:"uid"`                 
    Size int `json:"size"`
    Content string `json:content`
    Encoding string `json:encoding` 
    User string `json:"user"`
}

I tried

Encoding string `json:encoding`= "base64" // Not working
  • 写回答

3条回答 默认 最新

  • dongnius85154 2016-08-26 07:59
    关注

    You can't because in Go types do not have constructors.

    Instead, have either an explicit initializer function (or method on the pointer receiver) or a constructor/factory function (these are conventionally called New<TypeName> so yours would be NewFileData) which would return an initialized value of your type.

    All-in-all, I have a feeling this looks like an XY problem. From your question, it appears you want to have a default value on one of your fields if nothing was unmarshaled. If so, just post-process the values of this type unmarshaled from JSON and if nothing was unmarshaled to Encodning set it to whatever default you want.

    Alternatively you might consider this approach:

    1. Have a custom type for your field.

      Something like type EncodingMethod string should do.

    2. Have a custom JSON unmarshaling method for this type which would do whatever handling it wants.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题