当前位置: 首页 > 知识库问答 >
问题:

ResponseEntity生成转义输出而不是json

朱啸
2023-03-14

我的控制器正在响应:

“{\”firstname\“:\”firstname required\“,\”lastname\“:\”lastname required\“,\”password\“:\”password required\“,\”matchingpassword\“:\”matchingpassword required\“,\”email\“:\”email required\“}”

但在控制台中,Gson打印正确的json表示形式

    @RequestMapping(value = "/user/registration", method = RequestMethod.POST, headers = "Accept=application/json", produces = {"application/json"})
public ResponseEntity<String> registerUserAccount(@Valid @RequestBody UserDTO accountDto) {
    LOGGER.debug("Registering user account with information: {}", accountDto);
    User registered = userService.registerNewUserAccount(accountDto);
    return new ResponseEntity<>("Success", HttpStatus.OK);
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity handleValidationExceptions(MethodArgumentNotValidException ex) {
    LOGGER.debug("MethodArgumentNotValidException called");
    Map<String, String> errors = new HashMap<>();
    ex.getBindingResult().getAllErrors().forEach((error) -> {
        String fieldName = ((FieldError) error).getField();
        String errorMessage = error.getDefaultMessage();
        errors.put(fieldName, errorMessage);
    });
    Gson gson = new Gson();
    LOGGER.debug(gson.toJson(errors));
    return ResponseEntity.badRequest().contentType(MediaType.APPLICATION_JSON).body(gson.toJson(errors));
}

任何帮助都将是感激的,我已经失去了很多时间试图解决这个问题,我觉得这是一个愚蠢的东西,但我不能前进,因为我甚至不能完成我的第一个控制器

下面是项目的git(如果需要的话)

共有1个答案

司承业
2023-03-14

解决了。

正如我所怀疑的,这是我的一个愚蠢的错误,

ResponseEntity将字符串与T一样,因此,当传递给response时,String将由StringHttpMessageConverter处理,它将转义字符串。

 类似资料:
  • 问题内容: 我正在使用猫鼬(节点),输出id而不是_id的最佳方法是什么? 问题答案: 我在执行此操作的模型上创建toClient()方法。这也是重命名/删除您不想发送给客户端的其他属性的好地方:

  • 我正在使用插件从文件生成源代码。问题是生成的是而不是。我添加了文件,该文件如下所示: 这应防止生成。但它不起作用我仍然生成了而不是。 我的插件如下所示: 版本为。有人知道问题出在哪里吗? XSD非常庞大。这是生成的元素 生成的源是:

  • 1.3.4. 输出转义 另外一个Web应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。例如,O'Reilly在传送给MySQL数据库前需要转义成O\'Reilly。单引号前的反斜杠代表单引号是数据本身的一部分,而不是并不是它的本义。 我所指的输出转义具体分为三步: l识别输出 l输出转义 l区分已转义与未转义数据 只对已过滤数据进行转义是很有必要的。尽管转义能防止很多常见安全漏

  • Google App engine总是为url/test.js生成200,test.js不是静态资源,而是动态生成内容的url模式。内容将在N小时后过期,并生成一个新鲜内容。 我已经尝试了最后修改,ETag和cache-control。似乎都不起作用。

  • 问题内容: 我有一些这样的文字: 我想显示不带标签的内容: 我也不想应用标签,我想剥离它们。有什么简单的方法可以做到这一点? 角HTML: 问题答案: jQuery比SLOWER慢40倍左右 ,请不要将jQuery用于该简单任务。 用法: 使用angular.js: 用 :

  • 我有一个REST Api服务,它给了我以下响应 实际上,我希望json的格式如下所示(应为json) 为了实现这一点,我编写了以下代码 在上面的代码中,我以字符串的形式从REST Api获取响应,并将其放入变量中。此外,我将其反序列化为映射 进一步,我迭代它并形成我的预期Json响应。 我的问题是:在这种方法中,为了获得预期的json,我需要再次迭代反序列化的json,并手动形成它。 在反序列化自