1 springboot 默认 json 解析方案
1.1 返回 json数据
实体类
Controller
@RestController
public class UserController {
@GetMapping("/getAll")
public List
<User> getAll() {
List
<User> users
= new ArrayList<>();
for (int i
= 0; i
< 10; i
++) {
User user
= new User();
user
.setId(i
);
user
.setUsername("Mike-" + i
);
user
.setAddress("New York-" + i
);
users
.add(user
);
}
return users
;
}
}
1.2 HttpMessageConverter
将服务端返回的对象序列化成 json字符串将前端传来的 json 字符串反序列化为 java 对象
所有的 json 生成都离不开相关的 HttpMessageConverterSpringMVC 自动配置了 Jackson和Gson 的 HttpMessageConverter。springboot 又对此做了自动化的配置。所以如果用户使用 jackson 和 gson 的话,没有其他额外的配置,只需要添加依赖。
1.3 演示
实体类
自定义转换类
package com
.tzb
.config
;
import com
.fasterxml
.jackson
.databind
.ObjectMapper
;
import org
.springframework
.context
.annotation
.Bean
;
import org
.springframework
.context
.annotation
.Configuration
;
import org
.springframework
.http
.converter
.cbor
.MappingJackson2CborHttpMessageConverter
;
import org
.springframework
.http
.converter
.json
.MappingJackson2HttpMessageConverter
;
import java
.text
.SimpleDateFormat
;
import java
.util
.Date
;
@Configuration
public class WebMvcConfig {
@Bean
MappingJackson2HttpMessageConverter
mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter
= new MappingJackson2HttpMessageConverter();
ObjectMapper om
= new ObjectMapper();
om
.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
converter
.setObjectMapper(om
);
return converter
;
}
}
Controller
@RestController
public class UserController {
@GetMapping("/getAll")
public List
<User> getAll() {
List
<User> users
= new ArrayList<>();
for (int i
= 0; i
< 10; i
++) {
User user
= new User();
user
.setId(i
);
user
.setUsername("Mike-" + i
);
user
.setAddress("New York-" + i
);
user
.setBirthday(new Date());
users
.add(user
);
}
return users
;
}
}
1.3.1 修改
自定义配置
@Configuration
public class WebMvcConfig {
@Bean
ObjectMapper
objectMapper(){
ObjectMapper om
= new ObjectMapper();
om
.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
return om
;
}
}
2 使用 Gson 处理 json
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-web
</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-json
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson
</groupId>
<artifactId>gson
</artifactId>
</dependency>
Controller
@RestController
public class UserController {
@GetMapping("/getAll")
public List
<User> getAll() {
List
<User> users
= new ArrayList<>();
for (int i
= 0; i
< 10; i
++) {
User user
= new User();
user
.setId(i
);
user
.setUsername("Mike-" + i
);
user
.setAddress("New York-" + i
);
user
.setBirthday(new Date());
users
.add(user
);
}
return users
;
}
}
2.1 自定义日期格式
package com
.tzb
.config
;
import com
.google
.gson
.GsonBuilder
;
import org
.springframework
.context
.annotation
.Bean
;
import org
.springframework
.context
.annotation
.Configuration
;
import org
.springframework
.http
.converter
.json
.GsonHttpMessageConverter
;
@Configuration
public class WebMvcConfig {
@Bean
GsonHttpMessageConverter
gsonHttpMessageConverter(){
GsonHttpMessageConverter converter
= new GsonHttpMessageConverter();
converter
.setGson(new GsonBuilder().setDateFormat("yyyy/MM/dd").create());
return converter
;
}
}
2.1.1 另一种方法
@Configuration
public class WebMvcConfig {
@Bean
Gson
gson() {
return new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
}
}
3 fastjson
依赖
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-web
</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-json
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba
</groupId>
<artifactId>fastjson
</artifactId>
<version>1.2.72
</version>
</dependency>
@Configuration
public class WebMvcConfig {
@Bean
FastJsonHttpMessageConverter
fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter conerter
= new FastJsonHttpMessageConverter();
FastJsonConfig config
= new FastJsonConfig();
config
.setDateFormat("yyyy-MM-dd");
conerter
.setFastJsonConfig(config
);
return conerter
;
}
}