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

从spring控制器返回的JSON响应是html,而不是javascript中的JSON

养研
2023-03-14

我有一个Spring控制器,它正在向我脚本中存在的ajax调用发送JSON响应。我在控制器方法中使用了@响应体,当通过ajax调用调用JSON时,它直接发送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的形式出现。

请建议我实现这一点,并让我知道是否需要进一步。

提前感谢。

共有1个答案

孟乐逸
2023-03-14

您可以指定退货类型:

@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)
 类似资料:
  • 我试图创建一个Spring Rest控制器,基于这个例子我创建了一个这样的控制器。 DeveloperRestController.java web.xml dispatcher-servlet.xml 但是它显示404页没有找到,似乎是spring试图加载一个模板... 结果: 错误404/we b-INF/JSP/developer/list . JSP 我该怎么办?

  • 因此,在这种情况下,我想配置Spring/Jackson返回{}(2字节)。 我已经考虑过在调用中返回new Object(),否则将返回void,但IMO这是一个肮脏的sout,必须有更好的东西。

  • 我有一个spring boot webapp,我在其中定义了REST API。我将Spring Security性用于REST API安全性。 我已经用RESTController注释了我的控制器类。我最近更新了spring boot,mvc和安全性到最新版本。 我现在看到,在我的负面情况下,在更新之前,它返回json错误响应,但现在在更新之后,它返回html错误响应。 在更新之前,它给出了以下错

  • 当我使用Guzzle发送请求时,它会返回一条完整的错误消息,而不会解析内部的JSON。下面是它的外观: “”“ 客户端错误: 导致 响应:\n {\r\n ”错误“: [\r\n ”潜在客户已在此市场活动中“\r\n ]\r\n }\n ”“” 当我通过Postman发送相同的请求时,它确实会返回正确解析的响应消息。 我如何才能让Guzzle只返回消息,而不是完整的响应?

  • 我刚刚开始学习获取API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch 下面是我编写的一段代码片段,用于修补: 我希望从响应中得到一个JSON对象。json()。 与使用JSON时得到的类似。parse()。 相反,我得到了一个promise对象。 如果我像这里所示的那样扩大promise链... ..

  • 问题内容: 使用JQuery或任何其他类似框架从自定义URL / Web服务中加载HTML内容非常容易。到目前为止,我已经使用了很多次这种方法,并且发现性能令人满意。 但是所有书籍,所有专家都试图让我使用JSON而不是生成的HTML。它比HTML优越得多吗? 它快很多吗? 它在服务器上的负载是否要小得多? 另一方面,我有一些使用生成的HTML的原因。 它是简单的标记,通常与JSON一样紧凑或实际上