如果要这样做,我希望能够将null
作为JSON发送到浏览器:
json.NewEncoder(w).Encode(nil)
然后null
将被浏览器接收。但是在这种情况下:
var nearby map[string]Nearby
// ...
func GetOne(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
item := nearby[params["id"]] // item could be nil?
json.NewEncoder(w).Encode(item)
}
如果地图中不存在任何内容,那么浏览器会收到{}
而不是null
的信息...如果密钥不在,我可以通过某种方式发送null
地图?
答案 0 :(得分:4)
如对问题的评论中所示,映射值是一个结构。结构不能具有值nil
。
如果意图是在地图中没有值时写入null
,则在这种情况下显式写入null
:
item, ok := nearby[params["id"]]
if ok {
json.NewEncoder(w).Encode(item)
} else {
io.WriteString(w, "null")
// Can also use json.NewEncoder(w).Encode(nil), but that involves more machinery.
}