Jackson v2.8.2를 사용하여 JSON을 파일에 serialize합니다.Jackson - 사용자 정의 JsonSerializer로 사용자 정의 PrettyPrinter 사용
필자는 사용자 지정 serializer를 만들고 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