问题标签 [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 回答
202 浏览

json - 是否可以使用 jsonata 对通过 apache camel 公开的 api 进行 json 转换?

与 camel-jolt 类似,寻找 apache camel 与jsonata [https://jsonata.org/] 查询和转换框架的集成。我们需要使用 apache camel 公开 Rest API 并使用 json 查询语言 [jsonata for eg] 进行 json 转换,而不需要绑定到 java 对象,因为 json 结构是非常动态的。

0 投票
2 回答
181 浏览

jsonata - jsonata 按“外部”属性过滤

我需要list2按以下属性过滤值list1

JSON:

数据格式:

问题是 - 我不知道如何引用过滤器b的属性list1list2[a=b]

https://try.jsonata.org/dxPC5s-zM

预期结果是:

我知道示例是“愚蠢的”,但它只是说明了问题。我想知道是否可以使用一些临时变量来解决它?

谢谢!

0 投票
1 回答
597 浏览

jsonata - 将两个日期与 Jsonata 库进行比较

我正在使用 jsonata 库来比较从屏幕输入的值与包装器列表中的值。在这里,我从 UI 输入一个日期范围,并通过使用 DateTime.getTime() 方法将两个日期转换为 Unix Epoch 时间戳将其与我的包装器列表中的日期进行比较。

例如我的 JSON 是:

输入 StartDate和EndDate 分别为2020-07-20 和 2020-07-30,其中 StartDate.getTime() 为 1595721600000,EndDate.getTime() 为 1596240000000

Jsonata 查询是: lstData[strFieldName = "ActivityDate" and (dateTimeStamp >= 1595721600000 and dateTimeStamp <= 1596240000000)]

上述查询不起作用。我尝试了许多其他方法来使用 jsonata 进行日期比较,但没有任何效果。如果我删除上面的日期比较,则查询有效,即 lstData[strFieldName = "ActivityDate"] 有效。但是我试图找到的日期比较中有一些错误。

有人可以帮助我使用正确的 jsonata 日期语法吗?

谢谢, 施鲁蒂

0 投票
1 回答
148 浏览

json - 将名称包含空格或特殊字符的 json 字段与 Jsonata 匹配

假设我有一些 JSON,例如:

normal我可以通过简单的查询获得该字段的值:

但是我无法获得其他两个字段。我努力了:

但它们都不起作用

0 投票
2 回答
1088 浏览

jsonata - 如果数组包含特定字符串,则返回 True - JSONata

如果在提供的数组中找到特定的字符串,JSONata 中有没有办法让函数返回 TRUE?例如,我有一组颜色:

const myArray = [红、蓝、绿、粉]

我试图找出一个表达式,该表达式将在该数组中搜索“蓝色”,如果找到该值则返回 true。

在 JSONata 文档中,我发现了一个名为 $boolean(arg) 的函数,我认为我需要使用它,但我不确定如何实现它。文档将参数类型选项显示为“数组:包含一个强制转换为 true 的成员”,但我真的不知道如何实现它。

它会像 $boolean(myArray, "blue") 一样简单吗?

0 投票
1 回答
165 浏览

jsonata - 如何在确保结果仍然是 jsonata 中的数组的同时从数组中删除第一个元素?

我想创建一个删除数组第一个元素的 jsonata 表达式。有一个非常简单的表达式可以做到这一点:

但是当将此表达式应用于具有 2 个元素的数组时,此表达式不会返回仅包含第二个元素的数组,而是返回第二个元素,如您在以下 jsonata 测试中所见

https://try.jsonata.org/gl0l_wnGe

在此处输入图像描述

所以这不是我想要的。我正在寻找一个 for"new_array1"不返回"two"但返回的 jsonata 表达式["two"]

这是我遇到的实际问题的一个简化版本。实际问题是我想删除数组中具有特定索引的元素,当数组有 2 个元素时我遇到了同样的问题。

0 投票
1 回答
797 浏览

xml - 如何在 Jsonata 中实现 for 循环

我正在寻找将 xquery 转换为 jsonata ,

非常感谢任何形式的帮助和帮助。

提前致谢。

0 投票
1 回答
25 浏览

electron - 如何在 Electron 中使用 JSONata?

我去了https://try.jsonata.org/并复制了地址 json 文件。我已将右侧的表达式输入到我的代码中并运行我的应用程序。我在我的应用程序中没有得到https://try.jsonata.org/中显示的结果。所以,我知道这是一个非常普遍的问题,但是我需要做些什么“特别”才能让 JSONata 在 Electron 应用程序中工作?

0 投票
1 回答
163 浏览

jsonata - JSONata 性能/效率假设

我真的很喜欢 JSONata——很棒的库,谢谢!

我一直在玩弄的一件事是在特定键值上连接两个对象数组。

考虑库示例(有点简化):

我(从您的文档等)得到的印象是,这会为贷款数组中的每个条目迭代书籍数组,然后过滤输出。

问题 1:从性能的角度来看,这是正确的思考方式吗?以 .loans 还是 .books 开头是否重要?快速测试表明代码可以用任何一种方式编写......直觉上我会想象如果我有一个预过滤器(例如,只查看“过期”贷款),那么如果我从贷款开始并首先过滤它,我可以增加表现。听起来很合理,或者这是在草率下结论?

问题 2:使用映射重写此查询是否更有效(对于更大的数据集,显然),对于 O(m+n) 而不是 O(m*n)?我的意思是:

再次感谢图书馆 - 易于学习且非常有用。

0 投票
2 回答
247 浏览

javascript - $split() (jsonata) 函数中的正则表达式给出“正则表达式匹配零长度字符串”为什么?

我有一个如下所示的字符串文本,每当有新行并以日期 dd/mm/yyyy 开头时,我想拆分文本。

我在 javascript 中使用 jsonata $split() 函数。但是,我收到一个 jsonata 错误,因为以下“正则表达式匹配零长度字符串”。请帮助我如何解决这个问题。