【发布时间】:2021-08-16 18:13:42
【问题描述】:
我想编写一个 JSON 路径表达式,以便它引用表达式中的其他节点,我不想硬编码表达式中的任何值。
例如考虑遵循 JSON 路径,我想获得“Measurement”,使得“measurementID”等于“mid”节点的值。
我可以编写以下查询,但其中包含硬编码的“RR”值。
$.myroot.measurements[?(@.measurementID == "RR" )].Measurement
相反,我想编写以便从其他节点中选择“RR”。不幸的是,以下表达式对我不起作用。
$.myroot.measurements[?(@.measurementID == $.myroot.mid )].Measurement
{
"myroot": {
"name": "ABC",
"nameA1iases": [
{
"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"
}
]
}
}
谁能告诉我如何引用其他节点。
【问题讨论】:
-
你使用的是什么实现?不幸的是,并非所有实现都支持所有功能。 (不过,我们正在制定标准。)但是,您的路径似乎是正确的。您是否在任何在线评估器上尝试过?
-
我想在上面的场景中使用普通的 Jsonpath,我不想写除了纯 JSON 路径之外的任何代码,我在上面尝试了几个在线评估器,我没有得到预期的结果,它给出了我空的结果:(
-
我知道您只想使用 JSON 路径,但您必须使用一些库来根据数据评估路径。那个图书馆是什么,你看过哪些在线评估者?
-
我用过jsonpath.com
标签: node.js json path expression jsonpath