中间名首字母的 Jolt 配置

问题描述 投票:0回答:2

尝试找到中间的初始 Jolt 配置。问题是,我只需要考虑从 Json 返回的中间名中的第一个字符。另外第一个字符应该是字母(大写或小写),否则我需要返回 null。

M. -> M.  
M$ -> M  
$M -> null  
.M -> null  
Mary -> M  
1Mary --> null

输入1:

{
  "applicant": {
    "firstName": "Mary",
    "middleName": "M.",
    "lastName": "Coker"
  }
}

输入2:

{
  "applicant": {
    "firstName": "Mary",
    "middleName": "$M",
    "lastName": "Coker"
  }
}

1 的所需输出:

{
  "applicant": {
    "firstName": "Mary",
    "middleName": "M",
    "lastName": "Coker"
  }
}

2 的所需输出:

{
  "applicant": {
    "firstName": "Mary",
    "middleName": null,
    "lastName": "Coker"
  }
}
json jolt
2个回答
0
投票

享受:)

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "applicant": {
        "x_middleNameFirstChar": "=substring(@(1,middleName), 0, 1)",
        "x_aphabetStr": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
        "x_alphabetSplit": "=split(@(1,x_middleNameFirstChar),@(1,x_aphabetStr))",
        "x_splitSize": "=size(@(1,x_alphabetSplit))",
        "middleName": null
      }
    }
    }
  ,
  {
    "operation": "shift",
    "spec": {
      "applicant": {
        "x_*": null,
        "*": "applicant.&",
        "x_splitSize": {
          "2": {
            "@(2,x_middleNameFirstChar)": "applicant.middleName"
          }
        }
      }
    }
   }
]

0
投票

您可以使用 toLowertoUpper 函数,它们对作为

middleName
的第一个字符的字母分别有不同的影响,而对非字母字符(例如

)没有影响
[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "middleName": "=substring(@(1,&),0,1)",
        "up": "=toUpper(@(1,middleName))",
        "lw": "=toLower(@(1,middleName))"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "&1.&",
        "up|lw": { "$": "&2.extra.@0" }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "extra": "=size"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "&1.&",
        "middleName": { //get rid of the previosly derived "middleName" value
          "": ""
        },
        "extra": {
          "1": { // match middleName with a null 
            //if both of the derived "middleName" values are equal
            "@": "&3.middleName"
          },
          "2": { //keep the derived "middleName" value if the first character is a letter
            //eg.there are two different letters : upper one vs. lower one
            "@2,middleName": "&3.middleName"
          }
        }
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.