如何从子节点访问父节点

时间:2019-08-09 09:55:42

标签: jsonata

如何从子节点访问父对象。似乎我无法访问范围

这是源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
        }
    })
  ]
}

我是否必须将“内容”保存在某种变量中并将其传递给孩子?

2 个答案:

答案 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,这是确保最大灵活性的明智设计决策和速度。