복붙노트

[SPRING] 간단한 스프링 mvc json 서비스에서 출력하기 전에 여분의 빈 {} json 객체가 &&와 함께 나타납니다.

SPRING

간단한 스프링 mvc json 서비스에서 출력하기 전에 여분의 빈 {} json 객체가 &&와 함께 나타납니다.

좋아, 봄 MVC 기반 json 웹 서비스가있다. 이것은 테스트 응용 프로그램입니다. 스프링 MVC 기반의 편안한 json 서비스를 빌드 할 때 이와 같은 문제를 본 적이 없습니다. 내 테스트 서비스의 출력은 항상 json 객체를 반환하고 &&와 그 뒤에 반환하려는 데이터가옵니다. 결과는 다음과 같습니다.

{} && { "status": 200, "serverTime": "2013 년 1 월 6 일 7:35:45 EST"}

이 간단한 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 시간 동안 날아 갔다.

해결법

  1. ==============================

    1.MappingJacksonJsonView javadoc의 경우 :

    MappingJacksonJsonView javadoc의 경우 :

    public void setPrefixJson(boolean prefixJson)
    

    그래서 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>
    
  2. ==============================

    2.나는 같은 물건을 받고 있었고 당신이 제공 한 코드에서했던 것과 똑같은 실수를했습니다 :) 나는 우연히 컨트롤러 메소드에 주석 @ResponseBody를 추가하는 것을 실수로 잊어 버렸습니다.

    나는 같은 물건을 받고 있었고 당신이 제공 한 코드에서했던 것과 똑같은 실수를했습니다 :) 나는 우연히 컨트롤러 메소드에 주석 @ResponseBody를 추가하는 것을 실수로 잊어 버렸습니다.

  3. from https://stackoverflow.com/questions/14188545/i-am-getting-an-extra-empty-json-object-along-with-a-before-my-output-from by cc-by-sa and MIT license