如何从 JsonPath Finder 中的整数数组获取第 n 个位置值?
How to got nth position value from integer array in JsonPath Finder?
我正在尝试从整数数组中获取第 n 个位置值。
我的输入 JSON :
{
"data" : [
{
"status" : "ACTIVE" ,
"id" : 1 ,
"isEnabled" : true,
"sample" : [ 1, 2, 3, 4 ]
} ,
{
"status" : "DEACTIVATE" ,
"id" : 2 ,
"isEnabled" : false,
"sample" : [ 1, 2, 3 ]
} ,
{
"status" : "ACTIVE" ,
"id" : 3 ,
"isEnabled" : false ,
"sample" : [ 1, 2 ]
},
{
"status" : "DEACTIVATE" ,
"id" : 4 ,
"isEnabled" : true ,
"sample" : [ 1 ]
}
]
}
我输入的 JsonPath :
$.data[?((@.status != null) && (@.isEnabled == true))].sample[0]
预期输出:[1,2,3,4]
但是得到了:[1,1]
那么如何在 jsonpath 中获取我的期望值呢?我正在使用 this 工具。
我相信对于 jsonpath,您需要使用两个表达式。从你得到的结果中删除尾随 [0]
(它当前选择每个样本的第一个元素而不是过滤结果集的第一组),给你:
$.data[?((@.status != null) && (@.isEnabled == true))].sample
然后取评估结果:
[[1,2,3,4],[1]]
和 运行 它通过 $[0]
从集合中检索第一组。最后留给你的是:
[1,2,3,4]
我不确定是否应该有一种方法可以用一个表达式来完成您在 jsonpath 中所做的事情 - 这是一种非常糟糕的指定语言。
在 jmespath 中,您可以做基本相同的事情,但将它们组合在一起以一次获得结果,例如:
data[?status != null && isEnabled].sample | [0]
如果这是您的首选。
我正在尝试从整数数组中获取第 n 个位置值。 我的输入 JSON :
{
"data" : [
{
"status" : "ACTIVE" ,
"id" : 1 ,
"isEnabled" : true,
"sample" : [ 1, 2, 3, 4 ]
} ,
{
"status" : "DEACTIVATE" ,
"id" : 2 ,
"isEnabled" : false,
"sample" : [ 1, 2, 3 ]
} ,
{
"status" : "ACTIVE" ,
"id" : 3 ,
"isEnabled" : false ,
"sample" : [ 1, 2 ]
},
{
"status" : "DEACTIVATE" ,
"id" : 4 ,
"isEnabled" : true ,
"sample" : [ 1 ]
}
]
}
我输入的 JsonPath :
$.data[?((@.status != null) && (@.isEnabled == true))].sample[0]
预期输出:[1,2,3,4]
但是得到了:[1,1]
那么如何在 jsonpath 中获取我的期望值呢?我正在使用 this 工具。
我相信对于 jsonpath,您需要使用两个表达式。从你得到的结果中删除尾随 [0]
(它当前选择每个样本的第一个元素而不是过滤结果集的第一组),给你:
$.data[?((@.status != null) && (@.isEnabled == true))].sample
然后取评估结果:
[[1,2,3,4],[1]]
和 运行 它通过 $[0]
从集合中检索第一组。最后留给你的是:
[1,2,3,4]
我不确定是否应该有一种方法可以用一个表达式来完成您在 jsonpath 中所做的事情 - 这是一种非常糟糕的指定语言。
在 jmespath 中,您可以做基本相同的事情,但将它们组合在一起以一次获得结果,例如:
data[?status != null && isEnabled].sample | [0]
如果这是您的首选。