因为懒惰将thrift生成的对象直接在controller输出,被前端吐槽一堆字段
代码import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.apache.thrift.Tbase;
import org.apache.thrift.TException;
import org.apache.thrift.TSerializer;
import org.apache.thrift.protocol.TProtocolFactory;
import org.apache.thrift.protocol.TSimpleJSONProtocol;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.io.IOException;
@Configuration
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
return new Jackson2ObjectMapperBuilder()
.propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
.serializationInclusion(JsonInclude.Include.NON_NULL)
.serializerByType(Tbase.class, new ThriftSerializer())
.failOnUnknownProperties(false);
}
public static class ThriftSerializer extends JsonSerializer {
@Override
public void serialize(Tbase value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
try {
TProtocolFactory f = new TSimpleJSONProtocol.Factory();
String s = new TSerializer(f).toString(value, "UTF-8");
jgen.writeRawValue(s);
}
catch (TException e) {
throw new IOException(e);
}
}
}
}
- 感谢github的参考代码,网址*



