实际项目中,前后端之间数据的传输都使用Json
格式,在Spring Boot
中,接口返回Json
格式的数据很简单,在Controller
中使用RestController
注解就可以返回Json
格式的数据。在Spring Boot
中默认使用的Json
解析技术是jackson
JsonResult
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class JsonResult<T> {
private T data;
private Integer code;
private String msg;
public JsonResult() {
this.code = 0;
this.msg = "操作成功";
}
/**
* 没有数据返回,可以人为指定状态码和提示消息
* @param code
* @param msg
*/
public JsonResult(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
/**
* 有数据返回时,状态码为0,默认提示消息为:操作成功!
* @param data
*/
public JsonResult(T data){
this.data = data;
this.code = 0;
this.msg = "操作成功";
}
/**
* 有数据返回,状态码为0,认位指定提示信息
* @param data
* @param msg
*/
public JsonResult(T data,String msg){
this.data = data;
this.msg = msg;
this.code = 0;
}
}
JacksonConfig
在实际项目中,不可避免的会有null值出现,我们转json
时,可以使这些null值转换为""
这样的空字符串
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.io.IOException;
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder){
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString("");
}
});
return objectMapper;
}
}