isn't that the whole point of exposing the Marshaler interface... to allow structs to handle the marshalling however it wants?  I'm pretty sure this should be possible, but it would likely require that the custom `UnmarshalJSON` be responsible for unmarhsalling the entire object, not just these one or two fields.  That in and of itself may make it not worth dealing with, in which case the `Payload()` func you've got is a good alternative approach.