在颠簸规范中应用正则表达式模式来查找属性是字母数字还是数字

Apply regex pattern in jolt specification to find attribute is alphanumeric or number

我有一个场景,我想根据数据值填充属性。

输入:

{
   "PersonName":{
      "FirstName":"03-03-1984",
      "ID":"123567",
      "Name":[
         "Betty Lou",
         "Tre Chernockxdev"
      ],
      "LastName":"Tre Chernockxdev"
   }
}

输出:

{
   "Birth":{
      "YearOfBirth":"1984"
   },
   "Employee":{
      "LastName":"Tre Chernockxdev"
   },
   "Element":{
      "Category":"Fixed"
   }
}

因此,基于 ID 值,我想填充 Gender 属性。如果 ID 是数字,则用 Fixed 填充 Category,或者如果 ID 是字母数字,则用 Floating 值填充类别。

颠簸规格:

[
   {
      "operation":"shift",
      "spec":{
         "PersonName":{
            "FirstName":{
               "*-*-*":{
                  "$(0,3)":"Birth.YearOfBirth"
               }
            },
            "LastName":"Employee.LastName",
            "ID":"Fixed|Floating"
         }
      }
   }
]

我也检查了jolt string function,但找不到可用于检查数据类别的函数。我可以通过他们的方式找到 ID 值是否包含 numberalphanumeric?或者我可以应用 regex pattern 来检查数据是否包含 numberalphanumeric 值?

您想实现类似 ternary operator 的目标,这很难实现但有可能实现:

[
   {
      "operation":"shift",
      "spec":{
         "PersonName":{
            "*":"&"
         }
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "ID":[
            "=toInteger",
            "Floating"
         ]
      }
   },
   {
      "operation":"shift",
      "spec":{
         "ID":{
            "@":"ID",
            "Floating":null,
            "*":{
               "#Fixed":"ID"
            }
         },
         "*":"&"
      }
   },
   {
      "operation":"modify-overwrite-beta",
      "spec":{
         "ID":"=lastElement(@(1,ID))"
      }
   },
   {
      "operation":"shift",
      "spec":{
         "FirstName":{
            "*-*-*":{
               "$(0,3)":"Birth.YearOfBirth"
            }
         },
         "LastName":"Employee.LastName",
         "ID":"Element.Category"
      }
   }
]

另请参阅: