【问题标题】:How to use Jackson serialization on toString method?如何在 toString 方法上使用 Jackson 序列化?
【发布时间】:2019-03-21 15:05:48
【问题描述】:

我已经通过Jackson序列化设置了一个暴露的实体类,这在我的RestController中运行良好。

最近,我尝试创建一个Spring AOP来显示日志,但是它使用了类的toString,由于该类包含双向关系,因此抛出了StackOverflow异常。

Object result = joinPoint.proceed();
if (log.isDebugEnabled()) {
    log.debug("Exit: {}.{}() with result = {}", 
        joinPoint.getSignature().getDeclaringTypeName(),
        joinPoint.getSignature().getName(), 
        result);
}

如何设置toString 方法以使用已配置的Jackson 序列化?

【问题讨论】:

标签: java jackson spring-aop lombok


【解决方案1】:

我通过使用ObjectMapper 解决了我的问题。

Object result = joinPoint.proceed();
if (log.isDebugEnabled()) {
    log.debug("Exit: {}.{}() with result = {}", 
        joinPoint.getSignature().getDeclaringTypeName(),
        joinPoint.getSignature().getName(), 
        new ObjectMapper().writeValueAsString(result));
}

【讨论】:

  • 应该注意,对于其他人来说,如果你的 toString() 被更频繁地使用,这是一种性能非常昂贵的方法。我至少会把它变成一个类属性。 private final static objectMapper = new ObjectMapper();
猜你喜欢
  • 2015-05-20
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2016-06-24
  • 2016-04-25
  • 2015-10-02
相关资源
最近更新 更多