Jackson JSON 漂亮的打印使用注释
Jackson JSON pretty print using annotations
我在 Lagom Framework 中使用 @JSONCreator
和 @JsonCreator
将响应 bean 转换为 JSON。但是,JSON 没有格式化。如何使用注释(不是 ObjectMapper)漂亮地打印 JSON?这是我的示例响应 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;
}
}
漂亮的打印似乎是由 ObjectMapper
控制的,cannot be influenced by annotations. The Lagom documentation for negotiated serializers 有这个例子:
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);
我在 Lagom Framework 中使用 @JSONCreator
和 @JsonCreator
将响应 bean 转换为 JSON。但是,JSON 没有格式化。如何使用注释(不是 ObjectMapper)漂亮地打印 JSON?这是我的示例响应 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;
}
}
漂亮的打印似乎是由 ObjectMapper
控制的,cannot be influenced by annotations. The Lagom documentation for negotiated serializers 有这个例子:
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);