aah. Damn it :-) Thanks a lot. I am hitting myself for missing this. 2017-08-09 16:40 GMT+05:30 Jakob Borg <ja...@kastelo.net>:
> On 9 Aug 2017, at 12:26, Sankar <sankar.curios...@gmail.com> wrote: > > > > Now for the same, Item object, the json.Marshal function returns two > different strings for the `Item` object. > > > > If you run the playground url, you will find that: > > > > {"Items":[{"SD":"2009-11-10T23:00"}]} > > {"Item":{"SD":"2009-11-10T23:00:00Z"}} > > > > are two different outputs (notice the "seconds" and the "Z" in the > second line). I expected both the lines to print the same output for "SD" > as the same object is re-used for them both. > > > > Now, should I define MarshalJson and UnmarshalJSON function for the > []Item too (after making it a custom struct) ? > > > > Or is this a bug, or do I misunderstand anything ? > > The issue is that you have defined MarshalJSON as a method with a pointer > receiver, while the JSON marshaller will access it through an interface > value that is not addressable. Instead, declare the MarshalJSON method with > a value receiver: > > func (ct CustomTime) MarshalJSON() ([]byte, error) { ... } > > //jb > > -- Sankar P http://psankar.blogspot.com -- 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.