我有一个类似于以下内容的 JSON:
{
"orders":{
"678238": {
"orderId": 678238,
"itemName": "Keyboard"
},
"8723423": {
"orderId": 8723423,
"itemName": "Flash Drive"
}
}
}
我正在尝试 JSON 路径来获取第一个 orderId。当我尝试
$..orderId
时,我得到一个列出两个 orderId 的数组,然后我尝试 $..[0].orderId
从该数组中获取第一项(遵循 JsonPath - 过滤数组并仅获取第一个元素)。但这不起作用。我很困惑。
试试这个
console.log(jsonPath(json,"$['orders'].[orderId]")[0]); //678238
你就快到了。您需要将您所做的两件事结合起来。
$..orderId[0]
..orderId
递归地搜索 orderId
属性,为您提供它们的所有值,正如您所提到的。得到这个结果后,您只需应用 [0]
。
不过要小心。由于您的数据是一个对象,键是无序的,因此 JSON 文本中的第一个键可能不是内存中遇到的第一个键。您需要进行一些测试以确认您的结果与您的期望一致。
您的
JSON
甚至没有数组,并且您期望从数组中获取第一项,这就是它不起作用的原因。
假设,如果JSON的结构修改成这样
{
"orders": [{
"orderId": 678238,
"itemName": "Keyboard"
},
{
"orderId": 8723423,
"itemName": "Flash Drive"
}
]
}
然后就可以使用查询来获取第一笔订单了。
$.orders[0].orderId