springboot json

springboot默认使用jackson,本文不对其他json解析框架做介绍

bean配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder){
// long转string,由于long值过长,前端获取丢失精度
builder.serializerByType(Long.TYPE, ToStringSerializer.instance);
builder.serializerByType(Long.class, ToStringSerializer.instance);
ObjectMapper objectMapper = builder.build();
// 设置命名规则,驼峰转下划线等等
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
// 设置时间格式化
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
// 属性序列化,如null值不返回,空字符串不返回等等
objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);
return objectMapper;
}

配置文件

配置文件无法配置long转string

1
2
3
4
5
6
7
8
spring:
jackson:
# 属性序列化
default-property-inclusion: non_null
# 命名规则
property-naming-strategy: SNAKE_CASE
# 时间格式化
date-format: yyyy-MM-dd HH:mm:ss

参数

命名规则无法对Map进行序列化
命名规则。例:nameSize
LOWER_CAMEL_CASE:小写驼峰(nameSize)
UPPER_CAMEL_CASE:大写驼峰(NameSize)
SNAKE_CASE:驼峰转下划线(name_size)
UPPER_SNAKE_CASE:全大写下划线(NAME_SIZE)
LOWER_CASE:全小写(namesize)
KEBAB_CASE:驼峰转中划线(name-size)
LOWER_DOT_CASE:驼峰转点(name.size)