我正在使用Jackson v2.8.2將JSON序列化爲文件。Jackson - 將自定義PrettyPrinter與自定義JsonSerializer一起使用
我已經創建了一個自定義序列化器並實現了serialize
方法來根據需要自定義JSON輸出。
我調用串行如下:
// myClass is the object I want to serialize
SimpleModule module = new SimpleModule();
module.addSerializer(MyClass.class, new MySerializer());
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
mapper.registerModule(module);
try
{
mapper.writeValue(new File("json.txt"), myClass);
}
catch (JsonProcessingException e)
{
...
}
創建的JSON文件和內容看起來不錯。
該文件格式根據DefaultPrettyPrinter
,但我想用我自己定製PrettyPrinter
,我已經實現。
我該怎麼做?
我已經試過如下:
MyPrettyPrinter myPrettyPrinter = new MyPrettyPrinter();
mapper.writer(myPrettyPrinter);
mapper.writeValue(new File("json.txt"), myClass);
但那不是我的調用自定義打印機。
如果我按照您的建議更改代碼,它不會編譯 - 類型不匹配:cann不要從ObjectWriter轉換爲ObjectMapper'。 – ksl
@ksl你是對的。我道歉,我更新了我的答案。您必須將作者分配給一個變量並使用該變量 – pandaadb
謝謝,這很有用。還要注意''mapper.setDefaultPrettyPrinter(new MyPrettyPrinter())'也適用。我偶然發現了這裏 - https://github.com/FasterXML/jackson-databind/issues/689。 – ksl