java 获取到给定字符串中的所有json串,且json串必须包含metricId字段
时间: 2024-01-25 07:04:05 浏览: 32
你可以使用正则表达式来从给定字符串中提取所有符合条件的 JSON 字符串。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JsonParser {
private static final Pattern JSON_PATTERN = Pattern.compile("\\{.*?\\}");
public static List<String> parse(String input) {
List<String> result = new ArrayList<>();
Matcher matcher = JSON_PATTERN.matcher(input);
while (matcher.find()) {
String json = matcher.group();
if (json.contains("\"metricId\"")) {
result.add(json);
}
}
return result;
}
}
```
这个代码中,首先定义了一个静态的正则表达式 `JSON_PATTERN`,用来匹配 JSON 字符串。然后,使用 `Matcher` 对象找到所有符合条件的 JSON 字符串。最后,对每个匹配到的 JSON 字符串,判断其中是否包含 `"metricId"` 字段,如果包含则将其添加到结果列表中。
你可以使用以下代码来测试这个方法:
```java
public static void main(String[] args) {
String input = "abc {\"metricId\": 1, \"value\": 2} def {\"value\": 3} ghi {\"metricId\": 4, \"value\": 5}";
List<String> jsons = JsonParser.parse(input);
for (String json : jsons) {
System.out.println(json);
}
}
```
这个例子中,输入字符串包含三个 JSON 字符串,但只有前面两个不符合条件,最后一个符合条件,所以输出结果应该是:
```
{"metricId": 4, "value": 5}
```