Java 我得到了一个额外的空{}json对象以及一个&&;在我从一个简单的spring mvc 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

好的,我有一个基于spring mvc的json web服务。这是一个测试应用程序,在构建基于SpringMVC的RESTfulJSON服务时,我从未见过这样的问题。我的测试服务的输出总是返回空的json对象,后跟&&和我想要返回的数据。结果如下所示:

<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。我想我的周日不得不在这场比赛和红人队输给海鹰队之间度过。