jsonPath - 按索引访问字段的问题

问题描述

我尝试通过从 Carrier 获取值来访问值 shipping_id。我在 https://www.jsonquerytool.com/ 测试查询。如果我手动键入密钥 $.shipping_methods["11"]$.shipping_methods.11,我会收到正确的结果 ["Carrier"]。但是我在从 shipping_id 字段中获取键值时遇到问题。我尝试了这个 $.shipping_methods[$.shipping_id] 的许多变体,但没有成功。可以使用纯 jsonPath 吗?

{
   "shipping_id":"11","shipping_methods":{
      "10":"Post","11":"Carrier"
   }
}

解决方法

根据您使用的 JSON-Path 实现/环境,这可能或不可能。这是因为您要求的功能不属于 proposed standard,尽管某些库具有启用此类查询的功能,例如在 JSONPath-Plus 中,您可以使用 @property@parent(我使用 @root 没有成功) - 但这些是“扩展”:

$.shipping_methods[?(@property == @parent.shipping_id)]

您可以测试此online here

您链接的页面在后台使用了 JSPath,我看不到自述文件中提到的任何必需功能。使用承载 JSON-Path 引擎的通用编程语言进行深入研究会更简单,但不确定此处是否可以选择。