我試圖忽略零值接口omitempty沒有遺漏接口零值JSON
package main
import (
"fmt"
"encoding/json"
)
type MyStruct struct{
Val interface{} `json:"val,omitempty"`
}
func main() {
var s []string
s = nil
m := MyStruct{
Val : s,
}
b, _:= json.Marshal(m)
fmt.Println(string(b))
}
這裏是操場鏈接https://play.golang.org/p/cAE1IrSPgm 此輸出
{"val":null}
爲什麼不治療它作爲一個空值?有沒有辦法從json中省略這些nil值。
'm.Val'在這個例子不是零。 –
指向'nil' *的*變量與指向具有'nil'值*的變量的*變量不一樣。正如Cerise Limon指出的那樣,後者不是'nil',即'm.Val'指向一個變量's'。如果將'm'定義爲'm:= MyStruct {Val:nil}',它將被省略。 – putu
@putu我明白。但在我的情況下,變量s的值來自數據庫查詢,並且需要將其分配給Val。所以這不可能是一個直接的任務。 – Anuruddha