SpringBoot返回JSON数据
程序员文章站
2024-02-03 09:53:16
...
创建工程时添加web依赖spring-boot-starter-web
这个依赖默认添加jackson-databin作为json处理器,所以直接上手。
创建实体类
@Component
public class Man {
private String name;
private int age;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date burn_date;
//省略getter setter
}
创建控制器
@RestController
public class HelloController {
@Autowired
private Man man;
@GetMapping("/man")
public Man hello(){
man.setAge(30);
man.setName("卢本伟");
man.setBurn_date(new Date());
return man;
}
}
访问返回json数据
{“name”:“卢本伟”,“age”:30,“burn_date”:“2020-10-17”}
除了常见的json以外,还有gson还有fastjson
使用Gson:
首先要移除json-databind依赖
SpringBoot提供了Gson的自动转换类GsonHttpMessageConvertersConfiguration,所以添加完依赖以后就可以直接像json一样用了
实体类不用在字段上添加额外的注解
但是如果你想要对日期进行转换时,就要自定义转换类替代默认转换类
@Configuration
public class GsonConfig {
@Bean
GsonHttpMessageConverter gsonHttpMessageConverter(){
GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
GsonBuilder gsonBuilder = new GsonBuilder() ;
gsonBuilder.setDateFormat("yyyy-MM-dd hh:mm:ss");
//Protect受保护的字段不处理
gsonBuilder.excludeFieldsWithModifiers(Modifier.PROTECTED);
Gson gson = gsonBuilder.create();
gsonHttpMessageConverter.setGson(gson);
return gsonHttpMessageConverter;
}
}
最后时fastjson,听说时解析最快的框架,阿里巴巴牛x
但是它没那么容易使用
首先还是移除jackson-databind依赖
然后引入fastjson依赖
因为它不同于Gson,json,它要求提供自定义的转换类
@Configuration
public class MyFastJsonConfig {
@Bean
FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setCharset(Charset.forName("UTF-8"));
fastJsonConfig.setDateFormat("yyyy-MM-dd");
fastJsonConfig.setSerializerFeatures(
SerializerFeature.WriteClassName,
SerializerFeature.WriteMapNullValue,
SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteNullStringAsEmpty
);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
return fastJsonHttpMessageConverter;
}
}
除此之外还要配置响应编码
server.servlet.encoding.force-response=true
上一篇: Python解析json文件
下一篇: asp下返回以千分位显示数字格式化的数值