【发布时间】:2021-09-17 08:51:26
【问题描述】:
我目前正在研究 Java 项目中的导入功能,并且正在以字符串的形式接收对象。这里使用了类似于 JSON 的结构。对象用大括号括起来,列表用方括号括起来。
我现在有一个更复杂的对象,因为它由对象列表组成,这些对象本身携带更多(其他)对象的列表。我确实知道如何获取内部对象,但我在分离外部对象时遇到了困难。我觉得我忽略了一些相当简单的东西,但是所有的大括号和方括号并没有让它变得更容易。
这是导入字符串的外观示例(为了便于阅读,我将内部对象组合在一起):
[
{
[
{[oid1,oid2],VAL,id1},{[oid2],VAL,id2},
{[oid2,oid3,oid4],VAL,id3}
]
},
{
[
{[oid5,oid6],VAL,id1},
{[oid7,oid8],VAL,id3}
]
}
]
到目前为止,我有这个正则表达式 {\[([^]{]+)],([A-Z_]+),([^}]+)} 匹配所有内部对象并将它们的三个组件作为组返回。
像这样:
Match 1: {[oid1,oid2],VAL,id1}
Group 1: oid1,oid2
Group 2: VAL
Group 3: id1
这已经很好了,但只是返回所有内部对象的列表。现在我需要找到一种方法来获取外部对象列表以及它们所包含的内部对象列表。我应该补充一点,我不一定需要一步完成。我尝试拆分初始字符串,但无法想出一个不会“削减”太多的解决方案,这会破坏解析结果字符串。非常感谢任何帮助!
【问题讨论】:
-
外部对象到底是什么?
[ {{[oid1,oid2],VAL,id1},{[oid2],VAL,id2}, {[oid2,oid3,oid4],VAL,id3} ]是这样的吗? -
@Scratte 是和否 :) 这是一个 complete 对象,包括其内部对象。从某种意义上说,外部确实是一个空壳。
标签: java regex square-bracket braces