java - 卡在使用正则表达式仅提取 JSON 的根元素
问题描述
我有以下 JSON 数据:
{
"a": {
"b": "value"
},
"c": {
"a": {
"b": "another value"
}
}
}
字段的顺序未确定(即b
可以在上面a
的示例中)。现在我只想匹配根元素a
和它的值。
我尝试过的是以下正则表达式:
(?:"c".*?})?.*"a":\s?.*?"b":\s?"?(.*?)"?[,}]
我为 field 保留了非捕获组c
。但问题是,如果整个 JSON 中没有b
字段,对于巨大的有效载荷,要找出有效载荷中没有匹配项需要太多的步骤(由于回溯)。
这是我实际有效载荷的示例,它花费了大约 9 秒和 500K 步。在我在 regex101 上的实际有效载荷中,a
= file
,b
=size
和c
= event_actor
。因此,这将是匹配 JSON 数据的非常低效的方式。
那么我在这里缺少什么?任何想法,将不胜感激。
注意:我想要这种类型的Java正则表达式,因此标准正则表达式库不支持递归。
解决方案
推荐阅读
- python - ValueError:int() 的无效文字,基数为 10:使用 SQLALCHEMY 和谷歌应用引擎的“密码”
- c++ - 如何在 C++ 中的数组中生成唯一值
- r - NA的重新编码变量问题
- sqlite - sqlite3 是否在使用之前将整个数据库读入内存?
- dart - 你如何在 Dart 中使用 Stream.pipe?
- java - Java中指向String方法的函数指针
- filemaker - 如何创建在多个文件上填充门户的 Filemaker 列表?
- php - 删除 Yii 模型中的属性集
- html - ASP.NET:具有Repeater控件和交替数据的表
- android - 使用 csv 文件填充房间数据库