json字符串转string_Go中json使用小技巧

有的时候上游传过来的字段是 string 类型的,但是我们却想用变成数字来使用。本来用一个 json:",string" 就可以支持了,如果不知道 golang 的这些小技巧,就要大费周章了。

参考文章:http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/

1. 临时忽略 struct 空字段

type User struct {
     
    Email    string `json:"email"`
    Password string `json:"password"`
}

如果想临时忽略掉空 Password 字段,可以用 omitempty:

json.Marshal(struct {
     
    *User
    Password bool `json:"password,omitempty"`
}{
    User: user,
})

2. 解析成 string 类型

type User struct {
     
 Id uint64 `json:"id,string"`
}

func main() {
 user := User{Id: 123}
 bs, _ := json.Marshal(user)
 fmt.Println(string(bs))
}

输出

{"id":"123"}

3. 临时添加额外的字段

type User struct {
     
    Email    string `json:"email"`
    Password string `json:"password"`
    // many more fields…
}

临时忽略掉空 Password 字段,并且添加 token 字段

json.Marshal(struct {
     
    *User
    Token    string `json:"token"`
    Password bool `json:"password,omitempty"`
}{
    User: user,
    Token: token,
})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值