Consistently parses response body as JSON