Java 我得到了一个额外的空{}json对象以及一个&&;在我从一个简单的spring mvc json服务输出之前
好的,我有一个基于spring mvc的json web服务。这是一个测试应用程序,在构建基于SpringMVC的RESTfulJSON服务时,我从未见过这样的问题。我的测试服务的输出总是返回空的json对象,后跟&&和我想要返回的数据。结果如下所示:Java 我得到了一个额外的空{}json对象以及一个&&;在我从一个简单的spring mvc json服务输出之前,java,json,spring,model-view-controller,jackson,Java,Json,Spring,Model View Controller,Jackson,好的,我有一个基于spring mvc的json web服务。这是一个测试应用程序,在构建基于SpringMVC的RESTfulJSON服务时,我从未见过这样的问题。我的测试服务的输出总是返回空的json对象,后跟&&和我想要返回的数据。结果如下所示: <beans:bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <beans:property n
<beans:bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<beans:property name="mediaTypes">
<beans:map>
<beans:entry key="html" value="text/html" />
<beans:entry key="json" value="application/json" />
</beans:map>
</beans:property>
<beans:property name="defaultViews">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<beans:property name="prefixJson" value="true" />
</beans:bean>
</beans:list>
</beans:property>
<beans:property name="viewResolvers">
<beans:list>
<beans:bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
</beans:list>
</beans:property>
{}&{“状态”:200,“服务器时间”:“美国东部时间2013年1月6日下午7:35:45”}
我的控制器方法处理这个非常简单的GET请求的代码是:
@RequestMapping(value = "/test.json", method = RequestMethod.GET)
public ModelMap test(ModelMap m, HttpServletRequest request,
Locale locale) {
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
m.addAttribute("serverTime", formattedDate);
m.addAttribute("status", 200);
return m;
}
我一辈子都搞不清楚这个额外的空{}json对象是从哪里来的。我的spring配置如下所示:
<beans:bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<beans:property name="mediaTypes">
<beans:map>
<beans:entry key="html" value="text/html" />
<beans:entry key="json" value="application/json" />
</beans:map>
</beans:property>
<beans:property name="defaultViews">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<beans:property name="prefixJson" value="true" />
</beans:bean>
</beans:list>
</beans:property>
<beans:property name="viewResolvers">
<beans:list>
<beans:bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
</beans:list>
</beans:property>
任何帮助都将不胜感激。我在一个星期天花了6个小时试图弄清楚为什么会发生这种情况。来自
MappingJacksonJsonView
javadoc:
public void setPrefixJson(boolean prefixJson)
指示此视图的JSON输出是否应加前缀
"{} && ". 默认值为false。以这种方式作为JSON字符串的前缀
用于帮助防止JSON劫持。前缀呈现字符串
作为脚本在语法上无效,因此不能被劫持。这
前缀不影响JSON的计算,但如果JSON验证
如果对字符串执行,则需要忽略前缀
那么您是否尝试将prefixJson设置为false
<beans:bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<beans:property name="mediaTypes">
<beans:map>
<beans:entry key="html" value="text/html" />
<beans:entry key="json" value="application/json" />
</beans:map>
</beans:property>
<beans:property name="defaultViews">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<beans:property name="prefixJson" value="false" />
</beans:bean>
</beans:list>
</beans:property>
<beans:property name="viewResolvers">
<beans:list>
<beans:bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
</beans:list>
</beans:property>
我收到了与您提供的代码相同的内容,并且犯了与您相同的错误:)我只是不小心忘了向控制器方法添加注释@ResponseBody
谢谢你!真不敢相信我错过了这个。它无缘无故地杀死了一个星期天。它在大约20秒内修复了它!我还是不敢相信我这么多小时都忽略了这一点。谢谢,JP。我想我的周日不得不在这场比赛和红人队输给海鹰队之间度过。