我有自定义的JsonSerializer:
new JsonSerializer<T>() {
@Override
public void serialize(T instance, JsonGenerator gen, SerializerProvider sp) throws IOException, JsonProcessingException
{
try {
instance = someFunction(instance);
SerializableString serializableString = new SerializedString(defaultMapper.writeValueAsString(instance));
gen.writeRawValue(serializableString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
对我来说,我需要一种方法将gen.getOutputContext()
传递给defaultMapper.writeValueAsString(instance)
。有没有办法做到这一点?还是我使用ObjectMapper的方式错误?谢谢您的见识。
编辑:defaultMapper
的类型为ObjectMapper
。
答案 0 :(得分:1)
ObjectMapper
实际上具有我需要的内置方法-ObjectMapper.writeValue(JsonGenerator, T)
。我的问题中的修改后的代码(具有功能):
new JsonSerializer<T>() {
@Override
public void serialize(T instance, JsonGenerator gen, SerializerProvider sp) throws IOException, JsonProcessingException
{
try {
instance = someFunction(instance);
defaultMapper.writeValue(gen, instance)
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
在这里尽力帮助您!
我没有Java环境设置,但是使用Jackson JSON包的示例在此处:http://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/
让我知道这是否有帮助!
根据教程,取决于对象的设置方式,您可以通过“ writeVaueAsString(object o)和方法” writerWithDefaultPrettyPrinter()方法一起使用对象映射器对象,以获取可读的JSON字符串
但是,这不是“自定义”序列化器/反序列化器。
此解决方案对您有用吗?