programing

@ResponseBody를 사용하여 스프링 컨트롤러에서 JSON 데이터를 반환하는 방법

mytipbox 2023. 3. 9. 21:42
반응형

@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/setterCompany 클래스의 메서드.그래서 그 다음에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

반응형