展示到前端的对象,字段null值改为""
增加配置类
package com.cxbdapp.hbhtyyBackground.config;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
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 JsonConfig {
@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 o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString("");
}
});
return objectMapper;
}
}
返回结果对比:
{
"code": 200,
"msg": "退出当前账号成功",
"data": {
"username": "zxy_doctor",
"salt": null,
"email": null,
"avatar": null,
"lockFlag": "0",
"delFlag": "0",
"wxOpenid": null,
"miniOpenid": null
}
}
{
"code": 200,
"msg": "退出当前账号成功",
"data": {
"username": "zxy_doctor",
"salt": "",
"email": "",
"avatar": "",
"lockFlag": "0",
"delFlag": "0",
"wxOpenid": "",
"miniOpenid": ""
}
}
注意不能返回JSONObject数据
例如:
@ApiOperation(value = "小程序登录", notes = "小程序登录")
@Inner(value = false)
@GetMapping("/login")
public R login(@RequestParam(value = "code") String code) {
try {
JSONObject jsonObject = getOpenidToken(code);
return R.buildResult(jsonObject, VoCodeEnum.SUCCESS.getCode(), "小程序登录成功");
} catch (Exception e) {
log.error("小程序登录程序异常", e);
return R.buildResult(null, VoCodeEnum.FAIL.getCode(), "小程序登录程序异常");
}
}
访问报错:
{
"code": 1,
"msg": "Type definition error: [simple type, class cn.hutool.json.JSONNull]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cn.hutool.json.JSONNull and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.cxbdapp.msp.common.core.util.R[\"data\"]->cn.hutool.json.JSONObject[\"token\"])",
"data": ""
}