我使用REST Assured框架进行API测试,并且在查找具有空值的属性时遇到了一些困难。我真的对正则表达式一无所知:P
因此,API响应就像
"data": [
{
"type": "social",
"id": "164",
"attributes": {
"created_time": "2014-09-12",
"currency": "INR",
"budget": 381000,
"end_time": null,
"name": "Untitled",
"start_time": "2022-09-12",
"updated_time": "2014-09-12"
}
我需要找到具有"end_time"
之类空值的属性。
如果还有其他方法可以找到这样的属性,那将非常有用。
提前致谢!!
答案 0 :(得分:1)
要在JSON文本中搜索null
属性,可以使用以下正则表达式:
/"([^"]+)": null/
上面的正则表达式将在组1中捕获值为null
的所有属性。
说明:
null
以上解释翻译成普通英语:捕获引号之间的所有字符,后跟冒号,空格和null
。
根据您用于执行正则表达式的语言,您需要指定全局标志以匹配所有属性。第一个匹配组通常是结果的第一个元素,是数组。
根据您的语言,正斜杠' /'可能是必需的 - 可以将正则表达式指定为字符串,或者语言可以支持正则表达式 - 使用斜杠。最近,通常在结束斜杠后添加g
来指定全局标志。
在Java中
import java.util.regex.Matcher;
import java.util.regex.Pattern;
// Retrieve response from the REST API
String json_response = receiveResponse();
// Define the regex pattern
String pattern = "\"([^\"]+)" *: *null";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(json_response);
if (m.find( )) {
// Print the entire match
System.out.println("Found value: " + m.group(0) ); // > "end_time": null
// Print capture group 1
System.out.println("Found null for: " + m.group(1) ); // > end_time
} else {
System.out.println("NO MATCH");
}
您可以遍历所有匹配的字段:
while (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found null for: " + m.group(1) );
}