我想知道如何识别其中包含JSON的String。我正在编写一些监视功能,如果String包含JSON,我希望能够做一些事情。
这就是我解析的字符串不是100%JSON,它将包含JSON内容。这是一个例子:
"bla bla bla {"key": "value"} bla bla bla"
有了这个,我无法做传统技术,比如尝试并将其解析为JSON以查看它是否有效
我正在摆弄正则表达式,但我似乎无法找到一个好看的解决方案,似乎凌乱。
我没有合理的误差,但是有什么好方法可以做到这一点吗?
仅供参考:我在Java环境中
EDIT1
好的,给你们更多关于我想做的事情。基本上我需要监视我们正在打印的日志语句。基于以前的事件,我们遇到了一些记录不应记录的JSON有效负载的问题(特别是在调试级别以上)。
我有其他监控规则,但这是我想添加的规则。所以它不需要100%故障安全。
我删除了转义引号,它们真的毫无意义。
答案 0 :(得分:1)
匹配精确有效的json很棘手,因为它可能非常大。它与使用正则表达式解析json相同。相反,你可以做的是使用正则表达式检查 potential JSON。我假设你想删除它或用它做一些事情,所以可以超越和收集超过必要的东西。
您可以使用以下正则表达式字符串"(?:\\{\\\".+\\\"\\:.*\\}|\\[.*\\])"
来贪婪地匹配类似于json的任何内容。
找到匹配项后,您可以执行正式的json解析,以便在删除它之前验证它实际上是json。
答案 1 :(得分:0)
如果它将包含您提供的表单,则提取所有可能的{somethingherebutIdon'tKnowwhat}
,然后解析它们是否为json(匹配左括号的开头)。