我尝试理解为什么两个函数返回相同的输出。据我了解,省略空的目的是不将该键添加到结果结构中。我写了这个例子,我期望第一个输出没有“Empty”键,但由于某种原因它的值仍然显示为 0。package mainimport ( "encoding/json" "fmt" "strings")type agentOmitEmpty struct { Alias string `json:"Alias,omitempty"` Skilled bool `json:"Skilled,omitempty"` FinID int32 `json:"FinId,omitempty"` Empty int `json:"Empty,omitempty"`}type agent struct { Alias string `json:"Alias"` Skilled bool `json:"Skilled"` FinID int32 `json:"FinId"` Empty int `json:"Empty"`}func main() { jsonString := `{ "Alias":"Robert", "Skilled":true, "FinId":12345 }` fmt.Printf("output with omit emtpy: %v\n", withEmpty(strings.NewReader(jsonString))) // output with omit emtpy: {Robert true 12345 0} fmt.Printf("output regular: %v\n", withoutEmpty(strings.NewReader(jsonString))) // output without omit: {Robert true 12345 0}}func withEmpty(r *strings.Reader) agentOmitEmpty { dec := json.NewDecoder(r) body := agentOmitEmpty{} err := dec.Decode(&body) if err != nil { panic(err) } return body}func withoutEmpty(r *strings.Reader) agent { dec := json.NewDecoder(r) body := agent{} err := dec.Decode(&body) if err != nil { panic(err) } return body}
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消