問題:一直無法將user對象轉成json格式
按理來說,我在類上使用@RestController注解,就可以實現將實體類對象寫入響應體中,并作為json格式傳遞到客戶端,但現實是沒有生效,并且出現404,406,500等錯誤!
解決辦法:
一 ,添加json格式依賴
<!-- Jackson --><!-- Jackson核心庫 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.13.0</version></dependency><!-- Jackson數據綁定庫 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.4.2</version></dependency>
二, springmvc 消息轉成器 配置類
package config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.util.List;
@Configuration
public class WebMvcConfigurerConfig implements WebMvcConfigurer {@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {//你可以使用ObjectMapper將Java對象序列化為JSON字符串或將JSON字符串反序列化為Java對象。MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();/*設置ObjectMapper,用于序列化你可以使用ObjectMapper將Java對象序列化為JSON字符串或將JSON字符串反序列化為Java對象。*/ObjectMapper objectMapper = new ObjectMapper();//用于配置對象映射器(ObjectMapper)的設置,目的是為了使序列化后的JSON輸出更加易讀。objectMapper.enable(SerializationFeature.INDENT_OUTPUT);// 設置ObjectMapper,用于反序列化jsonConverter.setObjectMapper(objectMapper);// 添加到轉換器列表中converters.add(0, jsonConverter); // 可以添加到合適位置,比如開頭}}
三,在springmvc配置類中加載config所在包
@EnableWebMvc:開啟json依賴 功能
@ComponentScan({"controller", "config"}):掃描controller,config所在包
@Configuration:作為配置類
package config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;@Configuration
@ComponentScan({"controller", "config"})
@EnableWebMvc
public class SpringmvcConfig {
}
四, 在RequestMapping注解 要求user對象使用json格式
//傳遞對象@RequestMapping(value = "/user2", produces = "application/json")public User printUser1(User user) {System.out.println(user);return user;}