On 9 Aug 2017, at 12:26, Sankar <[email protected]> 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
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.