我正在接受JSON输入,并且希望它将其转换为大写。有人可以帮我提供我的代码
int synchronizeSingleUnit(ApiResultDTO apiResultDTO, def inputJSON, int totalUpdates) {
def sql = synchronizationApiSqlHelperService.getUnitsSql()
String unit = getEmptyIfValueNull(inputJSON.unit)
def session = sessionFactory_apiDb.openSession() as SessionImpl
def connection = session.connection()
def sqlConnection = new Sql(connection)
try {
sqlConnection.execute(sql, [unit:unit])
} catch (Exception ex) {
// Preload result with statement to be executed
apiResultDTO.setJsonFailingPart(inputJSON)
apiResultDTO.setFailedSql(sql, [unit:unit])
throw new ExceptionWrapper(apiResultDTO, ex)
} finally {
session.close()
connection.close()
}
答案 0 :(得分:1)
您可以按以下方式使用Java String.toUpperCase():
String unit = getEmptyIfValueNull(inputJSON.unit)
String uCaseUnit = unit.toUpperCase()
<-编辑->
作为注释和补充,我不知道方法getEmptyIfValueNull
的细节,但是从名称来看,您只想在表达式inputJSON.unit
返回null时返回一个空字符串。
Groovy有两个特殊的运算符,使这些表达式更易于编写。
?.
和?:
(看似猫王笑脸吗?)使用这两个,您可以更简洁地重写代码,如下所示:
String unit = inputJSON.unit?.toUpperCase() ?: ''
说明:
inputJSON.unit?.toUpperCase()
-计算inputJSON.unit
,如果该表达式返回null,则从整个表达式返回null(不要执行toUpperCase
方法)。如果inputJSON.unit
返回一个非null值,则事情将像使用inputJSON.unit.toUpperCase()
一样工作。 ... ?: ''
-接受一个表达式,如果它不是空字符串或null,则将其返回,否则返回空字符串。 第一个运算符.?
专门用于处理空值,而第二个运算符?:
使用groovy truth,它包含但不仅限于空值。
有几种写上面的方法,例如:
String unit = (inputJSON.unit ?: '').toUpperCase()
但是在我看来,第一个版本“更流行”。给每个人自己。