【发布时间】:2015-11-06 11:33:30
【问题描述】:
我正在使用依赖项:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
我有以下物品:
public Class X {
private String a;
private String b;
private Y y;
}
public Class Y {
private String c;
private String d;
}
我需要递归地记录类 X 的内容以获取类 Y 以及使用 JSON 样式。这是我的目标,也是这个问题的目的。
方法一:
ToStringStyle style = ToStringStyle.JSON_STYLE;
LOGGER.debug(ReflectionToStringBuilder.toString(new X(), style, false, false));
方法 1 结果:
{"a":"<a>","b":"<b>","y": com.<packages>.y@<hash>}
方法二:
RecursiveToStringStyle style = new RecursiveToStringStyle();
LOGGER.debug(ReflectionToStringBuilder.toString(new X(), style, false, false));
方法2结果:
[com.<packages>.x@<hash>[a=<a>,b=<b>,y=com.<packages>.y@<hash>[c=<c>,d=<d>]]
成功的方法:
`Merge of Approach 1 and Approach 2` but how to achieve this?
成功的方法结果(我的目标):
{"a":"<a>","b":"<b>","y":{"c":"<c>","d":"<d>"}}
【问题讨论】:
-
听起来像是您可以提交的功能请求... 可以实现为 RecursiveToStringStyle 的子类,类似于现有的 MultilineRecursiveToStringStyle。
-
是的,我已经尝试过这种方法。但我认为必须有更好的方法来实现我的目标。也许使用另一个依赖项?
-
仅供参考,这个问题和这些答案似乎也适用于
commons-lang3版本3.9。
标签: java reflection tostring apache-commons-lang