Java中的漂亮打印对象层次结构?

时间:2014-04-07 17:38:44

标签: java logging io object-graph

我正在开发一个数据分析项目,我们在这个项目中代表了您在语言中找到的许多基本实体。尽管如此,我想找到一种更好的方法来打印出他们的对象图。因此,例如,我们可能会:

Function: Average
Description: some description
Overload #1:
    parameter-set: paramset-a
        columns: 
           currency: string
           value: double
           scale: integer
    result-set: result-set-a
    preference: first-find
Overload #2: ...
Overload #3: ...

我的问题

让我们说,在上面的例子中,Function是我的根对象。函数有一些属性和一系列重载,每个重载都有自己的属性和子对象。

是否有一个库可以帮助我以格式良好的方式在根函数下打印对象图?

PS:上面的例子相对简单;在我们的许多情况下,对象层次结构深度为6-10级,这就是真正的问题出现的时候。

1 个答案:

答案 0 :(得分:1)

这远非完美,但这个问题确实值得回答。

https://github.com/EsotericSoftware/jsonbeans是实现类似的一种方法。它将任意Java对象(无需注释字段或任何内容)转换为JSON,并包括一个漂亮的打印方法。它可以大约执行您要的操作。

使用此库,您可以执行以下操作:

Json json = new Json();
System.out.println(json.prettyPrint(person));

对于某些示例数据,您可能获得的输出如下所示:

{
"name": "Nate",
"age": 31,
"numbers": [
   {
      "name": "Home",
      "class": "com.example.PhoneNumber",
      "number": "206-555-1234"
   },
   {
      "name": "Work",
      "class": "com.example.PhoneNumber",
      "number": "425-555-4321"
   }
]
}