如何使用 JSON 查询交叉引用属性

How to cross reference attributes with JSON Query

考虑关注 JSON。

我想要获取“Measurement”,使得“measurementID”等于“mid”节点的值。

 {
"myroot": {
    "name": "ABC",
    "nameAliases": [
        {
            "AliasName": "23123",
            "AliasNameTypeID": "test"
        }
    ],
    "nameTypeID": "test",
    "mid": "RR",
    "measurements": [
        {
            "Measurement": 2.62,  //-> This should be output of the JSON query
            "measurementID": "RR",
            "MeasurementPath": "demo",
            "measurementType": "TT",
            "UnitOfMeasure": "m"
        },
        
        {
            "Measurement": 40.62,
            "measurementID": "TR",
            "MeasurementPath": "demo",
            "measurementType": "T",
            "measurementUnitOfMeasure": "m"
        }
    ]
}  

此查询有效,但它具有硬编码值 'RR' $.myroot.measurements[measurementID = "RR"]

我想引用查询中的其他属性。我尝试了以下查询,但没有成功

$.myroot.measurements[measurementID = $.**.mid]

谁能告诉我正确的查询是什么。

阿图尔

在您的过滤器表达式中,您需要使用 $$ 来引用您相对于文档根目录的 mid 属性。使用 $ 它将尝试相对于 measurements 数组找到它。

myroot.measurements[measurementID = $$.myroot.mid].Measurement

https://try.jsonata.org/pf5pt9MMj