使用字符串時很容易得到一個空列表[]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 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消