使用JSONPathUtil.eval提取对象信息

hfwmuf9z  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(148)

我正在使用从API检索的JSON格式的数据。我也只能使用JSONPathUtil.eval。给定示例GET数据,我有以下输出:

{
"ResponseSample":"{\"StartDate\":\"2005-08-01\",\"EndDate\":\"2008-09-31\",\"Status\":
\"Pending\"}"
}

我使用的应用程序是Cisco Call Studio,它使用预加载的Java元素。在节点中定义变量我有以下内容:

importPackage(com.audium.server.cvpUtil);
var val= {Data.Element.GetUserCoverage.response_body}
var path = "$.StartDate";
JSONPathUtil.eval(val , path);

“var瓦尔”是上述API调用的结果。
我对value:key对前后的反斜杠感到困惑,因为我认为它们是转义字符。我不确定这是否是我的问题的原因。我尝试定义以下表达式,但没有结果:

$.StartDate
ResponseSample.*
ResponseSample.StartDate

在这种情况下,是否需要使用json.parse?任何反馈都非常感谢。我不是JSON的Maven,所以请原谅我的无知。

ljo96ir5

ljo96ir51#

我在使用postman时也遇到了同样的问题,在这里我为GET方法配置了REST API设置。Postman将显示带有反斜杠的JSON对象。我怀疑反斜杠是转义字符,因为双引号。postman中的JSON.parse()和JSON.stringify()不会删除这些反斜杠。(例如,在Postman“测试”中使用)
1.我猜您可能正在使用REST API,JSON响应返回时包含反斜杠,因此需要将JSON响应格式化为有效的JSON格式。

  1. Cisco Call Studio引入了一个新的实用程序,允许使用JSONPath表达式。JSONPath是一种JSON查询语言。您可以在构建Cisco Call Studio时使用JSONPath表达式。在“设置”和“名称”的“值”中,您将使用Java表达式和JSONPath表达式。
    1.使用JSON和JSONPath表达式的在线工具,这将有助于在响应使用JSON时为REST API调用构建表达式。
    https://jsonpathfinder.com/
    因此,在json示例中,您需要删除反斜杠。一旦你有了一个有效的json格式,然后使用jsonpathfind.com来构造你想要的路径(JSONPath)表达式。
    然后你可以使用https://jsonpath.com验证你的表达式。

qcbq4gxm

qcbq4gxm2#

我认为问题只是你的数组索引在路径var中,把它改成下面的,看看你怎么做。

importPackage(com.audium.server.cvpUtil);
var val= {Data.Element.GetUserCoverage.response_body}
var path = "$ResponseSample[0].StartDate";
JSONPathUtil.eval(val , path);

需要一些测试,也许一些。更换,以摆脱这些斜线。

相关问题