Довольно распечатать иерархию объектов в Java?

Я работаю над проектом по анализу данных, в котором мы представляем множество основных сущностей, которые вы можете найти в языке. Я хотел бы найти лучший способ распечатать их графы объектов, хотя для целей отладки. Так, например, мы могли бы иметь:

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 уровней, и именно тогда возникает настоящая проблема.

0 ответов

Это далеко не идеально, но этот вопрос действительно заслуживает ответа.

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"
   }
]
}
Другие вопросы по тегам