jolt - JOLT 变换 - 模式匹配
问题描述
我正在尝试通过匹配“||*”之类的模式来转换输入字段,其中单词由“|”分隔。但是,我无法让它工作。如果我替换'|' 通过':',规范有效。'|'是否有特殊含义,如何将其用作正则表达式的一部分?
Input:
{
"items": [
{
"itemId": "1234500AA",
"additionalData": "12345|20001|3000"
}
]
}
Spec:
Spec:
[
{
"operation": "shift",
"spec": {
"items": {
"*": {
"itemId": "ID",
"additionalData": {
"*|*|*": {
"$(0,1)": ["cartMenuItems[&3].baseProductId", "cartMenuItems[&3].mdmId"],
"$(0,2)": "cartMenuItems[&3].code",
"$(0,3)": "cartMenuItems[&3].sku"
}
}
}
}
}
}
]
Ouput Expected:
{
"ID" : "1234500AA",
"cartMenuItems" : [ {
"baseProductId" : "12345",
"mdmId" : "12345",
"code" : "20001",
"sku" : "3000"
} ]
}
但是,我收到如下错误:JOLT Chainr 在索引:0 处遇到构造 Transform className:com.bazaarvoice.jolt.Shiftr 的异常。
解决方案
颠簸似乎不喜欢 | (因为您需要逃避它们),您可以替换 |:
[
{
"operation": "modify-overwrite-beta",
"spec": {
"items": {
"*": {
"additionalDataTemp": "=split('\\|',@(1,additionalData))",
"additionalData": "=concat(@(1,additionalDataTemp[0]),'_',@(1,additionalDataTemp[1]),'_',@(1,additionalDataTemp[2]))"
}
}
}
},
{
"operation": "shift",
"spec": {
"items": {
"*": {
"itemId": "ID",
"additionalData": {
"*_*_*": {
"$(0,1)": ["cartMenuItems[&3].baseProductId", "cartMenuItems[&3].mdmId"],
"$(0,2)": "cartMenuItems[&3].code",
"$(0,3)": "cartMenuItems[&3].sku"
}
}
}
}
}
}
]
或者另一种方法是:
[
{
"operation": "modify-overwrite-beta",
"spec": {
"items": {
"*": {
"additionalData": "=split('\\|', @(1,additionalData))",
"baseProductId": "@(1,additionalData[0])",
"mdmId": "@(1,additionalData[0])",
"code": "@(1,additionalData[1])",
"sku": "@(1,additionalData[2])"
}
}
}
},
{
"operation": "shift",
"spec": {
"items": {
"*": {
"itemId": "ID",
"*": "cartMenuItems.&"
}
}
}
},
{
"operation": "remove",
"spec": {
"cartMenuItems": {
"additionalData": ""
}
}
}
]
推荐阅读
- php - 如何在方法导致 php 之前停止 foreach 循环迭代?
- excel - 执行代码时,我的 excel 不断崩溃
- powershell - 将结果输出到文本文件
- c# - 我可以在登录 Asp.net 之前重置 session_id 吗?
- java - 如果结束时间不在android中的当前日期,如何获取结束日期
- windows - 如何使用 Windows 共享文件夹作为 vagrant synced_folder?
- rest - REST 中的 QueryParam 与路径变量
- c - 将整数地址传递给 pthread_create 时的随机数
- python - 强制 pylint 分数在 github 分支上合并
- java - Assertions.assertThrows 返回 void 而它必须返回 Throwable | JUnit 5