如何使用 JSON 选择包含 () 的元素



我正在使用RestAssure进行API自动化,作为其中的一部分,我必须从JSON响应中提取一个值。

下面给出了 JSON 响应

{
"resourceName": "SERVICE_STATUS",
"records": [
{
"CREATED_DTTM": "2019-08-12T05:58:12.940Z",
"STATUS": "SUCCESS",
"SERVICE_EXECUTION_ID": "e760bed8-2ebb-4563-9812-7c0e5ed565cf",
"OUTPUT_FILE(S)": [
"FileC_FileA.csv"
],
"SERVICE_ID": "EXCEL2CSV"
}
],
"status": "SUCCESS"

}

我必须从响应中提取值"FileC_FileA.csv",但是当我通过 Json 路径执行此操作时,它失败了,因为"(("在 json 路径中具有特殊含义。

JsonPath js1 = new JsonPath(statusrespstring);
String outputfile = js1.get("OUTPUT_FILE(S)"); -----> This is failing

我试过使用

String outputfile = js1.get("OUTPUT_FILE"+"("+"S"+")");
String outputfile = js1.get('OUTPUT_FILE(S)');

但是得到错误作为 :使用了参数"S",但未定义。使用 JsonPath.params(...( 函数定义参数

有人请帮忙,如何选择键参数中包含 (( 的值。

我已经找到了解决方案。

ArrayList<String> outputfile = js1.get("records[0].'OUTPUT_FILE(S)'");

如果该属性具有特殊字符,则用单引号括起来将起作用。

参考 : https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html

最新更新