当前位置: 首页 > 面试题库 >

从简单的spring mvc json服务输出之前,我得到了一个额外的空{} json对象以及&&

蒙胤
2023-03-14
问题内容

好的,我有一个基于Spring MVC的json网络服务。这是一个测试应用程序,在构建基于Spring MVC的Restful
JSON服务时,我从未见过这样的问题。我的测试服务的输出始终返回,并且json对象为空,后跟&&和我想返回的数据。所以结果看起来像这样:

{} && {“状态”:200,“ serverTime”:“ 2013年1月6日,美国东部标准时间”}

我的控制器方法处理此非常简单的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对象来自何处。我的春季配置看起来像这样:

<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个小时,试图弄清为什么会这样。


问题答案:

MappingJacksonJsonViewjavadoc:

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>


 类似资料:
  • 问题是 有一个输入字符串集合和一个查询字符串集合。对于每个查询字符串,确定它在输入字符串列表中出现的次数。 字符串=[ab,ab,abc]查询=[ab,abc,bc]有ab的实例2,'abc'的实例1和'bc'的实例0。对于每个查询,添加一个元素。 现在我尝试使用链表实现它,但不是以2,1,0的形式获得输出。我得到的输出是2,1,0,2,2,1,0,2。我不知道是如何为超过3个链接创建LL的。请帮

  • 我尝试使用json对象更新sharePreference值。首先创建带有name的json对象,然后在SharedPreference中更新该对象。但是,我无法获得json对象名。请帮帮我. 我想像这个,。

  • 例如,当我为num1输入2,为num2输入3时,我希望在输入第二个数字后立即获得8的输出。但是,程序希望我再输入一个整数,而我只输入一个随机数,如242,它仍然输出8,这意味着它不会影响结果。所以我的问题是为什么有第三个输入?感谢您的帮助!

  • 我正在尝试使用。这是我用于执行ajax调用的代码: 所以我在响应中得到了一个有效的json对象,但是不知何故浏览器抛出了一个。实际错误是: 未捕获的语法错误:意外标记: 选择缩进=打开 棘手的是,当我在浏览器中检查时,响应标题是。我怎样才能解决这个问题?请帮帮我。。。

  • 问题内容: 我有一些javascript代码,可处理使用框架2.0构建的asp.net Web服务的json输出。现在,我需要支持从框架3.5 Web服务返回的数据。 我的JavaScript代码假定对象列表为返回值,在2.0中可以正常工作。但是,在框架3.5中,该列表包装在“ d”对象中。有什么办法可以删除“ d”包装并仅返回列表? 我宁愿在服务器端修复此问题 问题答案: 您不能将3.5+服务配

  • 我有一个平面JS对象: 我想克隆除一个元素以外的对象: 最简单的方法是什么(如果可能的话更倾向于使用ES6/7)?