问题标签 [jsonata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
216 浏览

jsonata - 在 JSONata 中,数组上下文中通配符 * 运算符的文档在哪里?

JSONata query to flatten array of arrays 中,SteveR 指出可以$.*用来展平数组。

我搜索了文档并在对象上下文中找到了对通配符 ( ) 的引用。但是,我还没有在 JSONata 的数组上下文中找到通配符 () 运算符的行为定义。

展平行为似乎类似于 XQuery 中的序列展平。

问:JSONata 记录的数组上下文中通配符 (*) 的行为在哪里?

0 投票
3 回答
898 浏览

jsonata - JSONata 防止数组展平

问:如何防止 JSONata 在数组构造函数中“自动展平”数组?

给定 JSON 数据:

JSONata 查询似乎选择了 4 个值:

$.x 和 $.y 的嵌套数组被展平/内联到我的外包装中,导致超过 4 个值:

我想达到的结果是

我可以通过使用来实现这一点

但这需要我先验地知道$.x 和 $.y 是数组。

我想选择 4 个值并让结果数组恰好包含 4 个值,与所选值的类型无关。

显然,关于 JSONata 序列和数组之间的交互,有些事情我无法理解。

0 投票
3 回答
1424 浏览

jsonata - 如何在 JSONata 中获取数组中元素的索引

JSONata 提供了几个函数来操作数组内容。但是,我不知道如何返回找到的元素的索引(类似于 JavaScript 中的 Array.indexOf 函数)。我正在寻找类似的东西:

0 投票
1 回答
128 浏览

jsonata - JSONata 查询...请求反馈

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

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

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

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

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

0 投票
1 回答
315 浏览

jsonata - 构建 JSONata 查询所需的帮助

我正在尝试使用 try.jsonata.org 发票数据构建 JSONata 查询。

我试图提出的问题是select distinct OrderID where Order.Product.Price is < 50?

我无法弄清楚如何使用方括号表示法中的谓词来做到这一点......当我试图通过 $.Account.Order.Product 数组时,我的尝试被挫败了。

使用 $map 和 $reduce 我能够想出这个相当复杂的解决方案......它仍然不能正确处理重复的 OrderID。(我看到这里已经请求了重复删除的问题)

问:在 JSONata 中表达这个查询的正确方法是什么?

0 投票
4 回答
1816 浏览

jsonata - JSONata:用于测试 JSON 值数据类型的方法或函数

JSONata 提供条件表达式和谓词,可用于从 JSON 树中选择值。

但是,我还没有找到一种方法来测试 JSON 值的数据类型。

例如,给定数组:

我只想提取数值。

问:在 JSONata 查询中,如何测试一个值的 JSON 数据类型(null、boolean、number、string、array、object)?

0 投票
1 回答
539 浏览

jsonata - JSONata:遍历树并返回所有对象名称

JSONata 具有$keys()函数,它返回与对象关联的所有名称。我正在尝试递归应用它以返回 JSON 树中存在的所有对象名称。

此示例返回嵌套数组中的对象名称。

为了消除数组嵌套,我想出了这个查询......这似乎工作正常。

但是,当我将完全相同的查询应用于此处所示的不同 JSON 数据时,结果并未完全展平。

问:构建此查询以使结果完全展平的正确方法是什么?

和/或

问:区分这两个数据集的哪些特征可以解释结果结构的差异?

0 投票
0 回答
54 浏览

jsonata - 是否可以获得通过查询找到的对象的完整路径

假设您有**[Colour = 'Purple']查询(请参见此处)并且您希望找到结果节点的实际路径,如下所示:

这可能吗?有什么功能可以实现吗?

提前致谢。

0 投票
3 回答
2134 浏览

jsonata - JSONata 中的组值

是否可以通过 JSONata 按特定属性对项目进行分组

例如,按照 resultDate 的值对 json 进行分组。

要生成以下输出:

也许使用 reduce 函数将元素分组,如本博文中所述。https://www.datchley.name/getting-functional-with-javascript-part-2/

0 投票
1 回答
487 浏览

json - 如何通过 JSONata 提取选择性键?

我只想从下面的对象中提取产品名称、产品 ID、SKU

预期结果:

尝试过的解决方案:

  1. 直接对象映射:

    /li>
  2. 筛:

    /li>

需要一种更简单的方法来做到这一点。就像是: