使用字符串时很容易得到一个空列表[]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{}
的自定义命名类型。[]byte
json.Marshaler
或者,如果您要查找“整数片段”,则使用[]N
where N
can be any of the basic integer types 而不是uint8
类型。该uint8
类型将不起作用,因为byte
is 的别名与uint8
so[]uint8
相同,[]byte
并且json.Marshal
也会""
为其输出。
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消