鍍金池/ 問答/Java  GO  網(wǎng)絡(luò)安全/ golang json.Marshal() slice的零值被轉(zhuǎn)換成null了

golang json.Marshal() slice的零值被轉(zhuǎn)換成null了

clipboard.png
go的json庫把零值slice轉(zhuǎn)換為null了,我想在返回的json里保留空slice [],請問有什么辦法不讓他轉(zhuǎn)換為null?

回答
編輯回答
爛人

@凌云識木 slice的零值是nil,轉(zhuǎn)化后就是json的null,文檔是ok的.

@xialeistudio 你的data["a"]是有值的, 且不是零值, 這種情況下轉(zhuǎn)成null才是有問題.

2018年1月31日 03:27
編輯回答
瞄小懶

你是不是跟php搞到一起了?[]代表的不是null 就是一個空數(shù)組而已!如果你想要null 那就a:nil

2017年6月17日 00:41
編輯回答
還吻

變量值為nil時,json編碼后就會輸出null,可以賦值一個空的slice,什么類型都可以,編碼后就會生成[]

2018年2月7日 03:34
編輯回答
柚稚

手動賦一個空的slice, 要不就在調(diào)用端處理這個

2017年9月6日 18:09
編輯回答
焚音
func main() {
    data := map[string]interface{}{
        "a": make([]string, 0),
    }
    buf, err := json.Marshal(&data)
    log.Println(string(buf), err)
}

輸出

2018/01/29 18:43:46 {"a":[]} <nil>

眼見為實,結(jié)果是空數(shù)組。不是什么null

2017年1月13日 09:05