JSON encode decode custom implementation through Interfaces