【问题标题】:Jackson JSON pretty print using annotations杰克逊 JSON 漂亮的打印使用注释
【发布时间】:2017-03-01 08:20:41
【问题描述】:

我在 Lagom 框架中使用 @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;
  }

}

【问题讨论】:

    标签: java json jackson lagom jackson-databind


    【解决方案1】:

    看来漂亮的打印是由ObjectMappercannot be influenced by annotations 控制的。 negotiated serializers 的 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2015-05-18
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 2011-03-08
      相关资源
      最近更新 更多