routes/hook: wrap JSON.parse in try/catch