2016-09-09 5 views
0

봄용 mvc를 사용 중이며 여기에 내 서비스가 있습니다.반환 유형 JSONObject에 대한 변환기가 없습니다.

@RequestMapping(value="/data/{id}",method=RequestMethod.POST) 
    @ResponseBody 
    public JSONObject data(@PathVariable Long id ,@RequestBody Long Intake) { 
     JSONObject obj = new JSONObject(); 
     obj.put("test", false); 
      System.out.equals(obj); 
      return obj; 
    } 

과 같이 오류를 던지고있다 : 나는 게터/세터가 될 수 있습니다 나를 가리키는 많은 링크를 확인 한

java.lang.IllegalArgumentException: No converter found for return value of type: class org.json.JSONObject 

가 누락되거나 @ResponseBody 어노테이션은 내가 이것을 실행 missing.so입니다 getter/setter가 필요없이 코드를 작성하지만 여전히이 오류를 표시합니다.

이 종속성도 가져 왔습니다.

import org.json.*; 

이 문제에 대한 의견이 있으십니까 ??

+0

()'http://stackoverflow.com/questions/18972013/jsonobject-alternative-in-spring-and-jackson –

+0

의 가능한 중복 : HTTP ://stackoverflow.com/questions/37380913/spring-restful-webservice-returning-json-without-model-object 사용자의 요구를 충족시키는 답변을 게시했습니다. – itachi

+0

@VladBochenin'toString()'은 약간 야만적입니다. 잭슨의 유용한 알고리즘과 설정을 약간 반영하기 때문입니다. 나는 또한 "Response-Type"이 맨 처음 String을 반환 한 후에 "application/json"으로 설정 될지 여부를 확인해야합니다. 'toMap()'이 더 나은 선택입니다. – itachi

답변

0

1 - 프로젝트에 jackson을 추가하십시오 (아직 선언되지 않은 경우).

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.5.0</version> 
</dependency> 

또는 2 - ObjectMapper 직렬화로 문자열 반환.

@RequestMapping(value="/data/{id}",method=RequestMethod.POST) 
@ResponseBody 
public String data(@PathVariable Long id ,@RequestBody Long Intake) { 
    ObjectMapper obj = new ObjectMapper(); 

    Map<String, Object> map = new HashMap<>(); 
    map.put("test", false); 

    return obj.writeValueAsString(map); 
} 
당신은 방법에서`는 obj.toString을 문자열을 반환 할 수 있습니다
+0

1-jackson이 추가되고 선언되었습니다 .2 - ob.g.writeValueAsString (map)에서 "처리되지 않은 예외 유형 JsonProcessingException"이 작동하지 않습니다. –

+0

BTW 난 문자열을 반환하고 싶지 않아요 .Json 객체가 반환해야합니다. –

+0

시도해 보셨습니까? \t @RequestMapping (값 = "/ 데이터/{ID}", 방법 = RequestMethod.POST) \t @ResponseBody \t 공공 String 데이터 (@PathVariable 긴 아이디, RequestBody 긴 섭취 @) { \t \t 시도 { \t \t ObjectMapper obj = new ObjectMapper(); \t \t JSONObject obj = new JSONObject(); \t obj.put ("test", false); \t System.out.equals (obj); \t \t \t return obj.writeValueAsString (obj); \t \t \t \t \t } 캐치 (JsonProcessingException 전자) { \t \t \t // TODO \t \t \t }} – adyjr