[SPRING] Jackson 메시지 변환기를 사용하여 JSON 응답을 만드는 Spring 3.0
SPRINGJackson 메시지 변환기를 사용하여 JSON 응답을 만드는 Spring 3.0
내 messageconverter를 잭슨의 것으로 구성합니다.
class Foo{int x; int y}
및 컨트롤러
@ResponseBody
public Foo method(){
return new Foo(3,4)
}
다른 구성없이 서버에서 JSON 문자열 {x : '3', y : '4'}을 반환 할 것으로 예상됩니다. 하지만 내 아약스 요청에 404 오류 응답을 받고
내가 잘못 ? 또는 serializer를 사용하여 Json 문자열을 내 응답 개체로 변환 한 다음 해당 문자열을 응답으로 반환해야합니다 (문자열 응답을 올바르게 만들 수 있음). 다른 구성을 만들어야합니까? 클래스 Foo에 대한 특수 효과 추가하기
여기 내 conf.xml입니다.
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
해결법
-
==============================
1.다음이 필요합니다.
다음이 필요합니다.
이것은 나를 위해 작동합니다.
점에 유의하시기 바랍니다
-
==============================
2.이것은 나를 위해 일했다 :
이것은 나를 위해 일했다 :
@RequestMapping(value = "{p_LocationId}.json", method = RequestMethod.GET) protected void getLocationAsJson(@PathVariable("p_LocationId") Integer p_LocationId, @RequestParam("cid") Integer p_CustomerId, HttpServletResponse response) { MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter(); Location requestedLocation = new Location(p_LocationId); MediaType jsonMimeType = MediaType.APPLICATION_JSON; if (jsonConverter.canWrite(requestedLocation.getClass(), jsonMimeType)) { try { jsonConverter.write(requestedLocation, jsonMimeType, new ServletServerHttpResponse(response)); } catch (IOException m_Ioe) { // TODO: announce this exception somehow } catch (HttpMessageNotWritableException p_Nwe) { // TODO: announce this exception somehow } } }
이 메소드는 아무 것도 반환하지 않는다는 것에주의하십시오 : MappingJacksonHttpMessageConverter # write ()는 마술을합니다.
-
==============================
3.MessageConverter 인터페이스 http://static.springsource.org/spring/docs/3.0.x/javadoc-api/는 getSupportedMediaTypes () 메서드를 정의합니다.이 메서드는 MappingJacksonMessageCoverter가 application / json을 반환합니다.
MessageConverter 인터페이스 http://static.springsource.org/spring/docs/3.0.x/javadoc-api/는 getSupportedMediaTypes () 메서드를 정의합니다.이 메서드는 MappingJacksonMessageCoverter가 application / json을 반환합니다.
public MappingJacksonHttpMessageConverter() { super(new MediaType("application", "json", DEFAULT_CHARSET)); }
Accept : application / json 요청 헤더가 없다고 가정합니다.
-
==============================
4.HTTP 404 오류는 리소스를 찾을 수 없다는 것을 의미합니다. 그 원인은 두 가지입니다.
HTTP 404 오류는 리소스를 찾을 수 없다는 것을 의미합니다. 그 원인은 두 가지입니다.
1을 수정하려면 올바른 요청 URL을 사용하거나 제공하는지 확인하십시오 (대소 문자를 구분하지 마십시오!). 2를 수정하려면 서버 시작 로그에서 시작 오류를 확인하고 적절히 수정하십시오.
이것은 모두 멀리 게시 된 코드와 정보를 뛰어 넘습니다.
-
==============================
5.잭슨 - 매퍼 - asl.jar뿐만 아니라 잭슨 - 코어 - asl.jar도 필요하다는 것을 알게되었습니다.
잭슨 - 매퍼 - asl.jar뿐만 아니라 잭슨 - 코어 - asl.jar도 필요하다는 것을 알게되었습니다.
-
==============================
6.이는 단지 추측이지만, 기본적으로 Jackson은 공개 필드 (공개 getter이지만 가시성에 관계없이 모든 setter)를 자동 감지합니다. 개인 필드를 원할 경우 자동 감지하도록이 기능을 버전 1.5로 구성 할 수도 있습니다 (자세한 내용은 여기 참조).
이는 단지 추측이지만, 기본적으로 Jackson은 공개 필드 (공개 getter이지만 가시성에 관계없이 모든 setter)를 자동 감지합니다. 개인 필드를 원할 경우 자동 감지하도록이 기능을 버전 1.5로 구성 할 수도 있습니다 (자세한 내용은 여기 참조).
-
==============================
7.나는 404가 당신의 HttpMessageConverter와 관련이 없다고 생각한다. 나는 404 호 문제가 있었고 이유는
과 일치하는 요청 만 DispatcherServlet (* .do에서 * .json으로 요청 매핑을 변경 함)으로 전송된다는 사실을 잊었다는 것입니다. 어쩌면이 또한 당신의 경우입니다. 나는 404가 당신의 HttpMessageConverter와 관련이 없다고 생각한다. 나는 404 호 문제가 있었고 이유는
과 일치하는 요청 만 DispatcherServlet (* .do에서 * .json으로 요청 매핑을 변경 함)으로 전송된다는 사실을 잊었다는 것입니다. 어쩌면이 또한 당신의 경우입니다. -
==============================
8.여기에 대한 답변 외에도 ..
여기에 대한 답변 외에도 ..
클라이언트 측에서 jquery를 사용한다면, 저에게 도움이 될 것입니다.
자바:
@RequestMapping(value = "/ajax/search/sync") public ModelAndView sync(@RequestBody Foo json) {
Jquery (JSON.stringify 함수를 사용하려면 Douglas Crockford의 json2.js를 포함해야 함) :
$.ajax({ type: "post", url: "sync", //your valid url contentType: "application/json", //this is required for spring 3 - ajax to work (at least for me) data: JSON.stringify(jsonobject), //json object or array of json objects success: function(result) { //do nothing }, error: function(){ alert('failure'); } });
from https://stackoverflow.com/questions/2259551/spring-3-0-making-json-response-using-jackson-message-converter by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] java.lang.IllegalArgumentException : 디폴트 서블릿 처리를 설정하려면 ServletContext가 필요합니다. (0) | 2018.12.18 |
---|---|
[SPRING] 봄, 잭슨 및 맞춤 설정 (예 : 맞춤 디시리얼라이저) (0) | 2018.12.18 |
[SPRING] 추가 매개 변수가있는 봄 전달? (0) | 2018.12.18 |
[SPRING] Maven을 사용하여 스프링 기반 실행 파일 병을 만드는 방법은 무엇입니까? (0) | 2018.12.18 |
[SPRING] 봄 무시 무시한 콩 (0) | 2018.12.18 |