golang json unmarshal based on type