json - spring-mvc 返回原始 json 字符串

标签 json spring-mvc gson

我希望能够方便地将对象自动序列化为 JSON,并能够返回原始 JSON 字符串。我使用 Gson 而不是 Jackson,因为 Gson 已经在我的应用程序中使用了一段时间,并且我在整个应用程序中都有现有的调整、转换器和注释。

<mvc:annotation-driven >
<mvc:message-converters register-defaults="true">
          <bean class="com.test.GSONHttpMessageConverter" />   
    </mvc:message-converters>
</mvc:annotation-driven>

我可以自动序列化pojo的:

@RequestMapping(value="foo/{name}", method = RequestMethod.GET)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
    return new Shop();
}

我希望它也能正常工作:

@RequestMapping(value="rawJsonTest/{name}", method = RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String rawJsonTest(@PathVariable String name) {
    return "{\"test\":5}";

}

现在的结果是一个转义值:

"{\"test\":5}"

代替:

{"test":5}

最佳答案

问题在于您的自定义转换器优先于默认转换器。它因此被称为,将 String 视为必须转换为 JSON 的原始 String,从而转义双引号。

我不确定是否以及如何使用 XML 在默认转换器之后(而不是之前)注册转换器,但您可以将 register-defaults 设置为 false 并提供您想要的所有转换器的显式列表申请。如果 org.springframework.http.converter.StringHttpMessageConverter 在您的自定义之前注册,它将首先被调用并按原样发送返回的字符串。

关于json - spring-mvc 返回原始 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019819/

相关文章:

php - 我的广播电台网站的 JSON 代码?

javascript - 如何将 JSON 转换为 HTML 下拉菜单

java - Spring Scheduled 注解是如何工作的

java - jackson VS。 Gson

javascript - 显示 json 文件的前 20 项

javascript - Ajax/Json 数据的大量 Jquery 附加的替代方案

java - 如何使 GSON 在未知属性上失败

android - 改造 - 在将其解析为 json 之前从响应主体中删除一些无效字符

Spring REST 服务..如何保护在 Spring MVC 中进行的 REST 调用

java - spring mvc javax.validation.UnexpectedTypeException : No validator could be found for type: java. lang.String