问题:一直无法将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 {
@Override
public 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;
}