读取空字符串环境变量到HOCON配置出现双引号异常问题
解决HOCON读取空字符串环境变量异常及默认值问题
问题1:读取空环境变量得到""""
你在.env中设置export SUPPORTED_VALUES=""时,shell会将带引号的空字符串传递给程序,HOCON解析时会保留外层引号,再叠加自身字符串解析的引号,最终导致得到""""。
解决方法:
将环境变量设置改为不带引号的形式:
export SUPPORTED_VALUES=
这样shell会传递真正的空字符串,HOCON解析后就能得到正常的""。
问题2:不设置环境变量时读取到"null"
你的HOCON配置supported-values: ${?SUPPORTED_VALUES}在环境变量不存在时,该配置项的值会被设为null,调用.getString()时会将null直接转为字符串"null"。
解决方法:
方案1:给HOCON配置添加默认空字符串
修改HOCON配置,为该字段指定默认空字符串:
{ feature: supported-values: ${?SUPPORTED_VALUES} "" }
环境变量存在时使用其值,不存在时自动使用空字符串。
方案2:使用可选属性读取逻辑
改用getOptionalString()方法读取,当属性不存在时返回null,再通过orEmpty()转为空字符串:
private val supportedValues = appConfig.getOptionalString("feature.supported-values").orEmpty()
内容的提问来源于stack exchange,提问作者kamal
相关产品推荐
相关产品推荐

