0

我正在调查 JSONata,作为我寻求一种声明性语法来描述从分层 JSON 数据到传统、规范化、关系表的转换的一部分。

示例使用 try.jsonata.org 发票数据并显示对三个 RDBMS 表的转换... AccountTable、AccountOrderTable、AccountOrderProductTable。

请注意,我在 $.Account.Order 数组中迭代了两次……一次为 AccountOrderTable 生成记录,再次为 AccountOrderProductTable 生成记录。闭包捕获 $order 以便产品条目可以访问父 $order.OrderID

虽然我可以对 $.Account.Order 数组进行两次迭代,但我想知道是否有一种干净的方法来构造 JSONata 查询,以便 $map 操作只应用于每个数组一次。

问:我怎样才能构造这个查询(同时生成相同的结果),以便我只 $map 一次 $.Account.Order 数组?

4

1 回答 1

0

我认为Order会产生相同的结果,但使用临时绑定来消除围绕数组的双循环。当然,您可以争辩说,作为一种声明性语言,实现应该负责优化评估。但我怀疑实施者可能暂时不会解决这个问题。

于 2018-04-06T13:51:06.830 回答