【问题标题】:Java toString puts json (gson impl) on logsJava toString 将 json (gson impl) 放在日志上
【发布时间】:2013-12-16 18:43:52
【问题描述】:

我有多个带有 toString 的类:其中一些有集合。

用 gson 创建 toString 是个好主意吗?

@Override
public String toString() {
    return new Gson().toJson(this);
}

我使用 toString 使用 log4j 进行日志记录。我不希望 toString 输出出现异常。 有人使用这个实现吗?

也许这是一个重复的问题,但我没有找到正确的答案

【问题讨论】:

  • 如果您的对象有反向引用,您将遇到问题。
  • 它也比“经典”字符串慢很多。

标签: java json log4j gson tostring


【解决方案1】:

您可能需要考虑 Apache Common 的 Reflection toString Builder。它应该比 Gson 更快,但在模型中添加新字段时仍然不需要修改。

@Override
public String toString() {
     return ReflectionToStringBuilder.toString(this);
}

【讨论】:

  • 很好的“toString”替代方案,但是对于 Gson,我们有:反序列化,new Gson().fromJson(...),我们正在使用反序列化来构建一些模拟。
【解决方案2】:

Gson 输出在包含复杂对象的集合上可能“很大”。

在评估了一些场景之后,我更喜欢只在特定点使用Gson。

log.info("[context scenario] Collection<Foo>" + new Gson().toJson(foos));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多