1

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

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

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

4

2 回答 2

1

答案是$$.content.date

这是它的文档

https://docs.jsonata.org/programming#built-in-variables

{
  "productionType": "specificProducts",
  "products": [
    content.production.(
    {"usedProducts" : {
            "id" = productionId,
            "productDate" = $$.content.date
        }
    })
  ]
}
于 2019-08-09T12:34:24.177 回答
0

另一种解决方案是在您想要访问它的“productionId”属性之前不要深​​入到元素中——就像这样:production

{
    "productionType": "specificProducts",
    "products": [
        content.{
            "usedProducts": {
                 "id": production.productionId,
                 "productDate": date
            }
        }
    ]
}

然后,您可以在其父content对象的上下文中访问“日期”属性。

当然,如果源对象嵌套更深,或者包含子对象数组,这些答案可能会也可能不会按预期工作......

但是要回答您最初的问题,“否”——在 JSONata 中,元素无法知道使用什么“路径”来取消引用它们。Iirc,这是一个有意识的设计决定,以确保最大的灵活性和速度。

于 2019-10-06T21:37:53.973 回答