Scala:Select Jackson JsonNode 键在 json 中使用 Regex 过滤器
Scala : Select the Jackson JsonNode keys using Regex filter in a json
我有示例 jsonNode 数据 - Inputstr =
{
"a.b.c.d.e":"123",
"a[0].b.c.d[0].e":"123",
"a[0].b.c.d[1].e":"123",
"a[1].b.c.d[0].e":"123",
"a[1].b.c.d[1].e":"123",
"d.e.f"="789",
"x.y.z"="789"
}
我想提取数据格式为 a[0-9*].b[0-9*].c[0-9*].d[0-9*].e[0 的键-9*]。
基本上,输出应该return me, 0 or more occurrences
[ a.b.c.d.e , a[0].b.c.d[0].e, a[0].b.c.d[1].e, a[1].b.c.d[0].e, a[1].b.c.d[1].e ].
所以,我所做的是
val json = ObjectMapper.readTree(Inputstr)
val itr = json.fieldNames
现在,在这个键迭代器上,我想创建一个通用正则表达式,return上面的输出就是我。
我尝试了但没有用
val regex = """a\[[0-9\]]*.b\[[0-9\]]*.c\[[0-9\]]*.d\[[0-9\]]*.e\[[0-9\]]*""".r
while(itr.hasNext())
{
val str= itr.next()
regex.findAllIn(str)
}
我一直在创建基本上可以采用 [0-9]* 的正则表达式,它应该检查大括号 [] 以及大括号内是否存在从 0 到 9 的数字。即使none存在,它也应该return我a.b.c.d.e。
我希望这是有道理的。
如有任何问题,请告诉我。
a(?:\[\d])?\.b(?:\[\d])?\.c(?:\[\d])?\.d(?:\[\d])?\.e(?:\[\d])?
应该完成这项工作,我将 [0]
部分包含在一个非匹配组中,可以使用 ?
来选择
我有示例 jsonNode 数据 - Inputstr =
{
"a.b.c.d.e":"123",
"a[0].b.c.d[0].e":"123",
"a[0].b.c.d[1].e":"123",
"a[1].b.c.d[0].e":"123",
"a[1].b.c.d[1].e":"123",
"d.e.f"="789",
"x.y.z"="789"
}
我想提取数据格式为 a[0-9*].b[0-9*].c[0-9*].d[0-9*].e[0 的键-9*]。 基本上,输出应该return me, 0 or more occurrences
[ a.b.c.d.e , a[0].b.c.d[0].e, a[0].b.c.d[1].e, a[1].b.c.d[0].e, a[1].b.c.d[1].e ].
所以,我所做的是
val json = ObjectMapper.readTree(Inputstr)
val itr = json.fieldNames
现在,在这个键迭代器上,我想创建一个通用正则表达式,return上面的输出就是我。
我尝试了但没有用
val regex = """a\[[0-9\]]*.b\[[0-9\]]*.c\[[0-9\]]*.d\[[0-9\]]*.e\[[0-9\]]*""".r
while(itr.hasNext())
{
val str= itr.next()
regex.findAllIn(str)
}
我一直在创建基本上可以采用 [0-9]* 的正则表达式,它应该检查大括号 [] 以及大括号内是否存在从 0 到 9 的数字。即使none存在,它也应该return我a.b.c.d.e。
我希望这是有道理的。 如有任何问题,请告诉我。
a(?:\[\d])?\.b(?:\[\d])?\.c(?:\[\d])?\.d(?:\[\d])?\.e(?:\[\d])?
应该完成这项工作,我将 [0]
部分包含在一个非匹配组中,可以使用 ?