首页 > 解决方案 > 从 spring 控制器返回 JSON 响应以 html 而不是 javascript 中的 JSON

问题描述

我有一个 spring 控制器,它正在向我的脚本中存在的 ajax 调用发送 JSON 响应。我在控制器方法中使用了@ResponseBody,它在通过ajax调用调用时直接发送JSON作为响应。

在我添加 JsonSanitizer.sanitize(myJsonString) 之后,它在 ajax 响应中返回为 html 而不是 JSON。因此,我现在无法解析 json 对象。

示例代码:

@ResponseBody
@RequestMapping(value="/getJson" method="GET")
public String fetchJsonDetails(MyObj obj) {
//DB call based on my object..
//Previously added
//return new Gson().toJson(obj);
//New line added now
return JsonSanitizer.sanitize(new Gson().toJson(obj));

}

在上面添加新行之后,响应以 html 而不是 JSON 的形式出现。

请建议我实现这一目标,如果有任何需要,请告诉我。

提前致谢。

标签: springowasp

解决方案


您可以指定您执行的退货类型:

@ResponseBody
@GetMapping(value="/getJson", produces="application/json")
public String fetchJsonDetails(MyObj obj) {
    // DB Call
    return JsonSanitizer.sanitize(new Gson().toJson(obj));
}

你也可以使用

import org.springframework.http.MediaType;
...
@GetMapping(value="/getJson", produces=MediaType.APPLICATION_JSON_VALUE)

推荐阅读