如何使用jsonpath表达式在Array列表中查找最后一个元素?

时间:2015-08-22 08:22:50

标签: jsonpath

我有像下面的json字符串

[
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 0
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 1
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 2
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 3
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 4
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 5
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "test",
        "partition": 0,
        "offset": 6
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "Hi Test",
        "partition": 0,
        "offset": 7
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "Hi Test",
        "partition": 0,
        "offset": 8
    },
    {
        "topic": "inputTopic",
        "key": "0",
        "message": "Hi Test",
        "partition": 0,
        "offset": 9
    }
]

如何使用jsonpath表达式获取最后一项?

 {
    "topic": "inputTopic",
    "key": "0",
    "message": "Hi Test",
    "partition": 0,
    "offset": 9
}

2 个答案:

答案 0 :(得分:10)

正如你可以在docs中读到的那样,你可以做一个

$..book[-1:]
如上面Duncan所提到的那样。或者你可以

{{1}}

就个人而言,我发现第一个更有表现力,后者更聪明一点。后者似乎也是预期的默认值。我想这是一个个人风格的问题。

答案 1 :(得分:5)

使用JsonPath时可以使用基础语言功能,因此在JavaScript中,长度属性可用。因此,你可以通过要求长度减一来说我想要最后一个。

假设您正在使用JavaScript中的JsonPath,以下查询将找到最后一项:

$.[(@.length-1)]

您可以在此在线JsonPath测试人员上查看此查询:http://www.jsonquerytool.com/sample/jsonpathlastinarray