Fallback on str() if JSON encoding fails