java,给定字符串中,如何截取出连续的json字符串,且字符串中必须包含metricId、metricName、alarmLevel
时间: 2024-02-20 09:57:23 浏览: 162
你可以使用正则表达式来匹配符合要求的JSON字符串。以下是一个示例代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JsonParser {
public static void main(String[] args) {
String input = "some text {\"metricId\":123,\"metricName\":\"cpu usage\",\"alarmLevel\":\"critical\",\"value\":1.0} some more text {\"metricId\":456,\"metricName\":\"memory usage\",\"alarmLevel\":\"warning\",\"value\":0.8}";
Pattern pattern = Pattern.compile("\\{\\s*\"metricId\"\\s*:\\s*\\d+\\s*,\\s*\"metricName\"\\s*:\\s*\"[^\"]+\"\\s*,\\s*\"alarmLevel\"\\s*:\\s*\"(critical|warning|info)\"\\s*[^}]*\\}");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
String json = matcher.group();
System.out.println(json);
}
}
}
```
这段代码的正则表达式可以匹配包含 `metricId`、`metricName`、`alarmLevel` 三个字段的 JSON 字符串,并且 `alarmLevel` 的值必须是 `critical`、`warning` 或 `info`。你可以根据你的实际需求修改正则表达式。
运行以上代码,输出结果如下:
```
{"metricId":123,"metricName":"cpu usage","alarmLevel":"critical","value":1.0}
{"metricId":456,"metricName":"memory usage","alarmLevel":"warning","value":0.8}
```
这样就成功地截取出了符合要求的 JSON 字符串。
阅读全文