@ResponseBody를 사용하여 스프링 컨트롤러에서 JSON 데이터를 반환하는 방법
Spring 버전 4.2.0, 휴지 상태 4.1.4 여기 있습니다.Controller
기능:
@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET)
@ResponseBody
public List<Company> listforCompanies() {
List<Company> listOfCompanies= new ArrayList<Company>();
listOfCompanies = companyManager.getAllCompanies();
return listOfCompanies;
}
Jackson JSON 매퍼 의존관계Pom.xml
:
<!-- Jackson JSON Mapper -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
목록 가져오기ArrayList
단, 반환 시 다음 오류가 표시됩니다.
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause
java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList
at org.springframework.util.Assert.isTrue(Assert.java:68)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124)
내가 팔로우하고 있는 예에 링크합니다.
나도 같은 문제에 직면해 있었다.안 넣었어요@ResponseBody
내가 사용하던 때부터@RestController
하지만 여전히 오류가 발생하고 있습니다. 왜냐하면 제가 이 파일을 넣지 않았기 때문입니다.getter/setter
Company 클래스의 메서드.그래서 그 다음에getter/setter
나의 문제는 해결되었다.
pom.xml에 다음 의존관계를 추가합니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
또한 반환된 콩이 비어 있지 않은지 확인해야 합니다(Jackson에 의해 일련화될 수 있습니다).특히 getters와 setters를 사용하지 않고 잭슨 주석 없이 필드가 null인 객체의 인스턴스를 반환하려고 했습니다.다음과 같은 메시지를 받았습니다.
com.fasterxml.jackson.databind.JsonMappingException:
No serializer found for class com.foo.bar.Baz and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
저는 이 문제에 직면했을 때 단순히 getter setter 메서드만 넣으면 문제가 해결되었습니다.
Spring Boot 버전 2.0을 사용하고 있습니다.
@Arpit 답변을 고려했을 때, 저는 잭슨 의존관계를 2개 추가할 때만 효과가 있었습니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
web.xml 이 설정되어 있습니다.<mvc:annotation-driven/>
.
도움이 된 답변은 https://stackoverflow.com/a/33896080/3014866 입니다.
네, 퍼블릭 수식어를 사용하여 설정자/게터를 추가합니다.
groovy+springboot를 사용하다가 이 오류가 발생하였습니다.
아래의 의존관계를 사용하고 있다면 getter/setter를 추가하는 것으로 충분합니다.
implementation 'org.springframework.boot:spring-boot-starter-web'
잭슨의 핵심 수업들이 함께 오니까.
저 같은 경우에는jackson-databind-2.8.8.jar
와 호환성이 없다JDK 1.6
스프링이 이 컨버터를 로드하지 못하게 하려고요버전을 다운그레이드 했더니 이제 작동합니다.
언급URL : https://stackoverflow.com/questions/32905917/how-to-return-json-data-from-spring-controller-using-responsebody