gpt4 book ai didi

java - java中的分解对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:52 26 4
gpt4 key购买 nike

我有一个巨大的对象,我当然有它的类,我正在从中提取一些值,但由于它真的很大,我不知道在哪个列表中或我正在寻找的值在哪里。

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

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

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

最佳答案

我假设您只是想找到一个特定的值并追踪其来源。而所有这些,你都想在调试时做。我会建议两个选项。

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

    try {
System.out.println(new JSONObject(new YourHugeObject()).toString(5));
} catch (JSONException e) {
log(e);
}

这会产生这样的东西。 (我通过创建一个带有一些嵌套字段、列表、 map 的对象来模拟这一点)

{
"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"
]
}

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

    XStream stream = new XStream();
System.out.println(stream.toXML(new YourHugeObject()));

哪个会产生,

<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>

以上任何一种方法,您都可以将结果打印到控制台或文件并手动检查。或者,您也可以使用反射,在这种情况下,您将不得不编写大量代码并花费大量时间来测试它。

关于java - java中的分解对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com