如何最好地识别包含JSON的String?

时间:2016-03-04 15:04:06

标签: java json regex parsing

我想知道如何识别其中包含JSON的String。我正在编写一些监视功能,如果String包含JSON,我希望能够做一些事情。

这就是我解析的字符串不是100%JSON,它将包含JSON内容。这是一个例子:

"bla bla bla {"key": "value"} bla bla bla"

有了这个,我无法做传统技术,比如尝试并将其解析为JSON以查看它是否有效

我正在摆弄正则表达式,但我似乎无法找到一个好看的解决方案,似乎凌乱

我没有合理的误差,但是有什么好方法可以做到这一点吗?

仅供参考:我在Java环境中

EDIT1

好的,给你们更多关于我想做的事情。基本上我需要监视我们正在打印的日志语句。基于以前的事件,我们遇到了一些记录不应记录的JSON有效负载的问题(特别是在调试级别以上)。

我有其他监控规则,但这是我想添加的规则。所以它不需要100%故障安全。

我删除了转义引号,它们真的毫无意义。

2 个答案:

答案 0 :(得分:1)

匹配精确有效的json很棘手,因为它可能非常大。它与使用正则表达式解析json相同。相反,你可以做的是使用正则表达式检查 potential JSON。我假设你想删除它或用它做一些事情,所以可以超越和收集超过必要的东西。

您可以使用以下正则表达式字符串"(?:\\{\\\".+\\\"\\:.*\\}|\\[.*\\])"来贪婪地匹配类似于json的任何内容。

找到匹配项后,您可以执行正式的json解析,以便在删除它之前验证它实际上是json。

答案 1 :(得分:0)

如果它将包含您提供的表单,则提取所有可能的{somethingherebutIdon'tKnowwhat},然后解析它们是否为json(匹配左括号的开头)。