我正在寻找一个库函数 (最好来自常用框架,例如 Spring、Guava、Apache Commons 等) ,它可以很好地打印任何 Java 对象的值。
这是一个普遍的问题,而不是一个具体的问题。在 StackOverflow 上看到过类似的问题,常见的答案是“在类上实现你自己的 toString()
方法”,但这个选项并不总是实用 - 我正在寻找一种对任何对象执行此操作的通用方法我遇到,这可能源自第三方代码。另一个建议是使用 Apache Commons 的 RefectionToStringBuilder ,例如:
new ReflectionToStringBuilder(complexObject, new RecursiveToStringStyle()).toString()
但这用途有限——例如,当它遇到一个集合时,它往往会输出如下内容:
java.util.ArrayList@fcc7ab1[size=1]
一个实际的用例示例是记录从 JGit 的 Iterable<PushResult>
pushCommand.call()
方法 - 如果发布答案,请确保它适用于此以及任何其他复杂对象。
原文由 Steve Chambers 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以尝试使用 Gson。它还序列化数组、地图或其他任何东西……
对于反序列化使用:
对于类型化地图,请参阅此答案: Gson: Is there an easiest way to serialize a map