jolt - 忽略输出 JSON 中的隐式数组创建
问题描述
所以目前如果输入是
{
"foo": "bar",
"tuna": "marlin"
}
规格是
[
{
"operation": "shift",
"spec": {
"foo": "baz",
"tuna": "baz"
}
}
]
输出是
{
"baz" : [ "bar", "marlin" ]
}
如何让 jolt 不创建数组,而是用数组的最后一个元素覆盖“baz”键的值?
预期产出
{
"baz" : "marlin"
}
解决方案
据我了解,您只想获取数组的最后一个元素。因此,为您的操作类型modify-overwrite-beta添加一个规范以及lastElement()函数,例如
[
{
"operation": "shift",
"spec": {
"*": "baz"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": "=lastElement(@(1,&))"
}
}
]
其中不需要在班次规范中明确编写每个键,而是用星号替换它们。然后,第二个规范中的星号也表示所有键(在这种情况下,这只是baz
),并且旁边的 & 号复制键的名称以表示相对值。
推荐阅读
- python - 出生日期测试失败
- tableau-api - 在仪表板中显示特定表数据
- c++ - 如何在 C++ 中拆分字符串并将它们存储在变量中?
- ruby-on-rails - 使用“_was”在 before_save 或 before_update 中获取旧值
- r - dplyr:filter() 抓取行
- reactjs - 为什么它在 VScode for reactJS 中向我显示这样的内容?
- javafx - 在 Gluon 移动项目中找不到 build.gradle
- javascript - 后跟括号和大括号的名称
- caching - Ehcache 驱逐和加载如何在多层设置中工作?
- amazon-web-services - dynamodb 扫描是否受扫描数据或返回数据大小的限制