【发布时间】:2019-09-29 11:51:30
【问题描述】:
我有多个类要序列化,例如使用 Jackson 来生成 Json
public class A{
int id;
String name;
Object database;
... getter and setter
}
我需要将json的所有值编码为base64,所以我像这样配置对象映射器
public class Base64Serializer<T> extends StdSerializer<T> {
private static final long serialVersionUID = 1L;
protected Base64Serializer(Class<?> t, boolean f) {
super(t, f);
}
@Override
public void serialize(T value, JsonGenerator jsonGenerator, SerializerProvider arg2) throws IOException {
String ecnodedOutput = Base64.getEncoder().encodeToString(((String) value).getBytes());
jsonGenerator.writeString(ecnodedOutput);
}
}
//Using the base64 Serializer to configure Object mapper
SimpleModule module = new SimpleModule();
module.addSerializer(new Base64Serializer(String.class, false));
objectMapper.registerModule(module);
objectMapper.writerWithDefaultPrettyPrinter().writeValue(outputStream,intanceOfClassA);
问题是它只对 String 类型进行编码,因为序列化程序只接受一种类型,是否有任何方法来编码所有字段值(long、int、object 等)。我的意思是编码 json 的所有值关于它的字段类型是字符串还是整数??
【问题讨论】: