如何使用 JSONPath 结果数组获取第一项?

问题描述 投票:0回答:3

我有一个类似于以下内容的 JSON:

    {
        "orders":{
            "678238": {
                "orderId": 678238,
                "itemName": "Keyboard"
            },
            "8723423": {
                "orderId": 8723423,
                "itemName": "Flash Drive"
            }
        }
    }

我正在尝试 JSON 路径来获取第一个 orderId。当我尝试

$..orderId
时,我得到一个列出两个 orderId 的数组,然后我尝试
$..[0].orderId
从该数组中获取第一项(遵循 JsonPath - 过滤数组并仅获取第一个元素)。但这不起作用。我很困惑。

arrays json jsonpath
3个回答
1
投票

试试这个

console.log(jsonPath(json,"$['orders'].[orderId]")[0]); //678238

0
投票

你就快到了。您需要将您所做的两件事结合起来。

$..orderId[0]

..orderId
递归地搜索
orderId
属性,为您提供它们的所有值,正如您所提到的。得到这个结果后,您只需应用
[0]

不过要小心。由于您的数据是一个对象,键是无序的,因此 JSON 文本中的第一个键可能不是内存中遇到的第一个键。您需要进行一些测试以确认您的结果与您的期望一致。


0
投票

您的

JSON
甚至没有数组,并且您期望从数组中获取第一项,这就是它不起作用的原因。

假设,如果JSON的结构修改成这样

{
    "orders": [{
            "orderId": 678238,
            "itemName": "Keyboard"
        },
        {
            "orderId": 8723423,
            "itemName": "Flash Drive"
        }
    ]
}

然后就可以使用查询来获取第一笔订单了。

$.orders[0].orderId
© www.soinside.com 2019 - 2024. All rights reserved.