java中的细分对象

ant*_*ant 6 java

我有一个巨大的对象,我当然有它的类,我从中提取一些值,但因为它真的很大,我不知道在哪个列表或我正在寻找的值是什么.

有没有办法创建某种对象分解路由并搜索每个部分的我期望的值,它隐藏在对象的某个地方,我只是在eclipse中找不到它太嵌套了.

我想过使用反射来遍历对象类的所有字段并搜索每个字段内的值(列表中的字段(列表列表等)).还有其他想法吗?

不幸的是,这些答案都没有帮助我,我正在开始赏金

che*_*ine 6

我假设你只想找到一个特定的值并追踪它的来源.而这一切,你想在调试时做.我建议两种选择.

Option1 使用JSON - 将对象序列化为json字符串,并对结果进行手动文本搜索.你需要json.jar(或任何其他解析器).

    try {
       System.out.println(new JSONObject(new YourHugeObject()).toString(5));
    } catch (JSONException e) {
      log(e);
    }
Run Code Online (Sandbox Code Playgroud)

哪个会产生这样的东西.(我通过创建一个带有一些嵌套字段,列表,地图的对象来模拟这个)

{
 "ct": {
      "a": 1,
      "b": "sdf",
      "f": 12,
      "nested": {
           "key1": {
                "kk": "kk",
                "ssdf": 123
           },
           "onemorekey": {
                "kk": "kk",
                "ssdf": 123
           }
      }
 },
 "doubleProp": 12.2,
 "lngprop": 1232323,
 "strProp": "123",
 "stringlist": [
      "String1",
      "String2",
      "String3"
 ]
}
Run Code Online (Sandbox Code Playgroud)

Option2 将对象转换/序列化为XML.使用XStream,这将是所有可用解析器中最简单的.只需两行代码,

    XStream stream = new XStream();
    System.out.println(stream.toXML(new YourHugeObject()));
Run Code Online (Sandbox Code Playgroud)

哪个会产生,

<com.kmg.jsontools.test.JSTest>
<stringlist>
 <string>String1</string>
 <string>String2</string>
 <string>String3</string>
</stringlist>
<strProp>123</strProp>
<doubleProp>12.2</doubleProp>
<lngprop>1232323</lngprop>
<ct>
 <a>1</a>
 <b>sdf</b>
 <f>12.0</f>
 <nested>
   <entry>
     <string>key1</string>
     <com.kmg.jsontools.test.Type1>
       <kk>kk</kk>
       <ssdf>123</ssdf>
     </com.kmg.jsontools.test.Type1>
   </entry>
   <entry>
     <string>onemorekey</string>
     <com.kmg.jsontools.test.Type1>
       <kk>kk</kk>
       <ssdf>123</ssdf>
     </com.kmg.jsontools.test.Type1>
   </entry>
 </nested>
</ct>
</com.kmg.jsontools.test.JSTest>
Run Code Online (Sandbox Code Playgroud)

无论上述哪种方法,您都可以将结果打印到控制台或文件并手动检查.或者,您也可以使用反射,在这种情况下,您还必须编写大量代码并花费大量时间进行测试.