为了账号安全,请及时绑定邮箱和手机立即绑定

如何为 []byte 的 json.Marshal 获取空列表 [] 而不是 null?

如何为 []byte 的 json.Marshal 获取空列表 [] 而不是 null?

Go
莫回无 2023-02-06 19:36:25
使用字符串时很容易得到一个空列表[]string{}:import (    "encoding/json"    "fmt")func main() {    slice1 := []string{} // non-nil but zero-length    json1, _ := json.Marshal(slice1)    fmt.Printf("%s\n", json1) // []}上面代码的输出是[],但是当我[]byte使用[]byte{}returns 时""。我应该如何获得像我进入的那样的空列表[]string{}?import (    "encoding/json"    "fmt")func main() {    slice2 := []byte{}    json2, _ := json.Marshal(slice2)    fmt.Printf("%s\n", json2) // ""}
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

请参阅文档

数组和切片值编码为 JSON 数组,除了 []byte 编码为 base64 编码的字符串,nil 切片编码为空 JSON 值。

粗体部分是你得到的原因""。如果你想要[]from ,你需要一个实现接口[]byte{}的自定义命名类型。[]bytejson.Marshaler

或者,如果您要查找“整数片段”,则使用[]Nwhere Ncan be any of the basic integer types 而不是uint8类型。该uint8类型将不起作用,因为byteis 的别名与uint8so[]uint8相同,[]byte并且json.Marshal也会""为其输出。


查看完整回答
反对 回复 2023-02-06
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号