json codec handles nil values gracefully