如何从子节点访问父对象。似乎我无法访问范围
这是源json
{
"content" : {
"date" : "2019-02-10T02:40:48Z",
"production" : {
"productionId" : "918",
}
}
}
这是我的奏鸣曲
{
"productionType": "specificProducts",
"products": [
content.production.(
{"usedProducts" : {
"id" = productionId,
"productDate" = content.date // how do I access content
}
})
]
}
我是否必须将“内容”保存在某种变量中并将其传递给孩子?
答案 0 :(得分:1)
答案是$$.content.date
这里是文档
https://docs.jsonata.org/programming#built-in-variables
{
"productionType": "specificProducts",
"products": [
content.production.(
{"usedProducts" : {
"id" = productionId,
"productDate" = $$.content.date
}
})
]
}
答案 1 :(得分:0)
另一种解决方案是不深入production
元素,直到您要访问其'productionId'属性-像这样:
{
"productionType": "specificProducts",
"products": [
content.{
"usedProducts": {
"id": production.productionId,
"productDate": date
}
}
]
}
然后,您可以仅在其父content
对象的上下文中访问'date'属性。
当然,如果源对象嵌套得更深,或者包含子对象数组,则这些答案可能无法按预期效果工作。
但是要回答您最初的问题,“ no”-在JSONata中,元素无法知道使用什么“ path”对它们进行取消引用。 Iirc,这是确保最大灵活性的明智设计决策和速度。