栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jackson将thrift生成的对象转换为json

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jackson将thrift生成的对象转换为json

背景

因为懒惰将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的参考代码,网址*
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号