Джексон JSON красиво печатает с использованием аннотаций

Я использую @JSONCreator и @JsonCreator для преобразования bean-компонента ответа в JSON в Lagom Framework. Но JSON не форматируется. Как я могу распечатать JSON, используя аннотации (не ObjectMapper)? Вот мой образец ответа bean:

@Immutable
@JsonDeserialize
public class foo {

  private final List<Result> _result;

  private final MetadataBean _meta;

  @JsonCreator
  public foo (List<Result> _result, MetadataBean _meta) {
    this._result= _result;
    this._meta = _meta;
  }

}

person Abhishek Mukhopadhyay    schedule 01.03.2017    source источник


Ответы (1)


Кажется, что красивая печать контролируется ObjectMapper и не может зависеть от аннотаций. В документации Lagom для согласованных сериализаторов есть это пример:

public class JsonTextSerializer implements MessageSerializer.NegotiatedSerializer<String, ByteString> {
    private final ObjectMapper mapper = new ObjectMapper();

    @Override
    public MessageProtocol protocol() {
        return new MessageProtocol(Optional.of("application/json"), Optional.empty(), Optional.empty());
    }

    @Override
    public ByteString serialize(String s) throws SerializationException {
        try {
            return ByteString.fromArray(mapper.writeValueAsBytes(s));
        } catch (JsonProcessingException e) {
            throw new SerializationException(e);
        }
    }
}

Затем можно включить красивую печать в картографе (возможно, в конструкторе):

mapper.enable(SerializationFeature.INDENT_OUTPUT);
person Alex Taylor    schedule 01.03.2017