反向ToStringBuilder:使用嵌套对象将字符串转换为对象

时间:2015-03-11 12:21:23

标签: java apache

有没有办法将我的输出从ToStringBuilder转换回java对象?

由于某种原因,我需要将一些String转换为object,这些字符串由ToStringBuilder从java对象转换。

像这样:

[homeRequest=HomeRequest[homeDate=Tue Mar 10 07:58:17 CST 2015,homeInfo=[HomeInfo[ipId=<null>,name=Test]]]]

HomeRequest是一个对象,HomeInfo是一个对象。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来拆分值。

String line = "[homeRequest=HomeRequest[homeDate=Tue Mar 10 07:58:17 CST 2015,homeInfo=[HomeInfo[ipId=<null>,name=Test]]]]";

Pattern pat = Pattern.compile("^.*HomeRequest\\[homeDate=([^,]*),.*HomeInfo\\[ipId=([^,]*),name=([^\\]]*).*");
Matcher m = pat.matcher(line);
if (m.find()) {
    String homeDate = m.group(1);
    String ipId = m.group(2);
    String name = m.group(3);
    ...
    // create new instances of the objects
}


正则表达式的解释:

^.*HomeRequest\\[homeDate= - 匹配从行首到homeDate=

的所有字符

([^,]*) - 匹配未指定数量的字符在第一个,之前停止,以后可以通过组索引访问该组1

,.*HomeInfo\\[ipId= - 从,到任意字符的匹配

([^,]*) - 匹配未指定数量的字符,在第一个,之前停止,以后可以通过组索引访问该组2

,name= - 匹配文字子字符串

([^\\]]*) - 匹配未指定数量的字符在第一个]之前停止,以后可以通过组索引访问该组3

.* - 匹配所有后续字符

有关正则表达式的进一步说明,请查看regex101.com。在那里你会找到并完整解释上面的例子。