我需要使用正则表达式从JSON数组的字符串中获取值String示例:
[INFO][2022-11-11] Response body :
{
"values":[
"abc123",
"def456",
"xyz789"
]
}
所以我想得到值:ABC123,默认值456,xyz789
请注意,我使用的是字符串(实际上是日志输出),因此我不确定是否可以使用任何库进行JSON解析
我尝试使用下面的正则表达式,但只得到最后一个数组值xyz789:
"values"\s*:\s*\[(\s*"(\w+)"\s*,?)*]
我的Java解决方案
第一次
1条答案
按热度按时间hc2pp10m1#
Jackson的例子
如果您使用一个解析JSON的库(如Jackson、Gson等),而不是试图重新发明轮子,那么几乎可以毫不费力地完成。
下面是一个如何使用Jackson完成此操作的示例。
假设您有以下POJO:
这就是反序列化传入JSON所需的全部内容:
更重要的是,如果你使用像Spring或Jakarta这样的平台,请求和响应的转换将自动完成。
如果数据是动态的,引入POJO没有多大意义,那么您可以将其解析为一个Tree,并使用该Tree的Nodes:
手动剖析
如果您想不惜一切代价手动执行此操作,下面是一种通过捕获JSON数组并对其进行拆分来提取这些值的方法: