当前位置: 首页 > 知识库问答 >
问题:

如何在JsonPath Finder中从整数数组中获得第n个位置值?

南宫勇军
2023-03-14

我试图从一个整数数组中得到第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[?(( @.状态!=null)

预期输出:[1,2,3,4]

但是得到了:[1,1]

那么如何在jsonpath中获得我的期望值呢?我正在使用这个工具。

共有1个答案

公西承
2023-03-14

我相信在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]

以防这对你来说是个更好的选择。

 类似资料:
  • 我正在使用Javascript(ES6)/FacebookReact,并尝试获得大小不同的数组的前3个元素。我想做与Linq take(n)等价的操作。 在我的Jsx文件中,我有以下内容: 然后我尝试了前3个项目 这不起作用,因为地图没有一个设置的函数。 你能帮忙吗?

  • 我想做一个模板,在那里我可以输入一个索引,它会给我在那个索引的类型。我知道我可以用来实现,但我想自己实现它。例如,我想这样做, ...它会给出位置的类型(因为数组是从0开始索引的)。我怎么能这么做?多谢了。

  • 返回数组中的每个第 n 个元素。 使用 Array.filter() 创建一个包含给定数组的每个第 n 个元素的新数组。 const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); everyNth([1, 2, 3, 4, 5, 6], 2); // [ 2, 4, 6 ]

  • Java中的两个一维数组/向量可以这样相加: Java中的两个二维数组/矩阵可以这样添加: 这两个函数都要求数组具有相同的大小,以避免。 应该有一种方法可以使用递归添加两个未知维度的数组。 例如,下面的代码使用假设函数 应该输出 现在我想知道如何实现这个函数。 我从以下伪代码开始: 可以使用java.lang.reflect.Array中的-方法创建新数组 可以这样进行循环: 但我遇到了很多运行时

  • 问题内容: 我正在使用Javascript(ES6)/ FaceBook进行反应,并尝试获取大小变化的数组的前3个元素。我想做相当于Linq take(n)。 在我的Jsx文件中,我有以下内容: 然后得到我尝试的前三个项目 这不起作用,因为地图没有设置功能。 你能帮忙吗? 问题答案: 我相信您正在寻找的是:

  • 问题内容: 我正在研究“如何从javascript中的数组随机访问元素”。我发现了许多与此有关的链接。 问题: 但是在这种情况下,我们只能从数组中选择一项,如果我们想要多个元素,那么我们将如何实现这一点,所以请仅从该语句中获取一个数组中的多个元素。 问题答案: 尝试以下无损快速功能: