Hi, I have a struct with custom json.MarshallJSON function. I need to ignore field of this type when the value is null. something like this
package main import ( "encoding/json" "fmt" ) type Custom struct { Name string Show bool } type FinalJSON struct { T1 *Custom `json:"field,omitempty"` T2 string `json:"field2,omitempty"` } func (c *Custom) MarshalJSON() ([]byte, error) { if !c.Show { return nil, nil } return json.Marshal(c.Name) } func main() { t1 := &Custom{Name: "c1", Show: true} t2 := &Custom{Name: "c2", Show: false} f1 := FinalJSON{T1: t1, T2: "Sss"} f2 := FinalJSON{T1: t2, T2: "Sss2"} j, err := json.Marshal(f1) if err != nil { panic(err) } fmt.Println(string(j)) j, err = json.Marshal(f2) if err != nil { panic(err) } fmt.Println(string(j)) } NOTE : this code has a runtime error if the FinalJSON.T1 = nil then the result is omited from the output, but I want to handle it in MarshalJSON function. is there any way to handle this? I get the structure from database, and I have a type like pq.NullTime with extra MarshalJSON function, when the time is not Valid (.Valid == false), I need to remove it from the json output. thank you -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.