如何解决将HOCON字符串转换为有效json字符串的库或算法
我仅限于在Java应用程序的配置文件中使用hocon
。
我的问题是我无法更改格式,但现在需要将其存储在仅接受平面yaml
文件的另一个后端中。
示例app.conf
文件:
play {
http {
port = 9000
port = ${?HTTP_PORT}
secret.key = "secretKey"
secret.key = ${?APPLICATION_SECRET}
errorHandler = Example.handler.ErrorHandler
}
}
尝试1:使用TypesafeConfig读取和解析hocon
文件:
final ConfigRenderOptions renderOptions = ConfigRenderOptions.defaults()
.setoriginComments( false )
.setJson( true )
.setComments( false );
// Render mergedConfig: Config
String jsonFromHocon = mergedConfig.root().render( renderOptions );
final JsonNode jsonNodeTree = mapper.readTree( jsonFromHocon );
发生这种情况时有两个问题:
-
mapper.readTree
将引发错误,因为play.http.port
的第二个条目不是数字,也没有引用,${?HTTP_PORT}
是文字值;我想保留hocon的功能,如果不加引号,则包括env替换。
关于如何利用typeSafe配置功能将conf输出到半有效json的任何想法。
除非能够操纵值的结果,否则无法使用打包的json解析器。 我在Google上搜索了一些如何自定义读取值的方法,但是目前还不可行。
预期输出:
在所有值上加上引号,并将值__replace__
附加到所有具有重复键的键上,并具有env vars
play {
http {
port = "9000"
port__replace__ = "${?HTTP_PORT}"
secret.key = "\"secretKey\""
secret.key__replace__ = "${?APPLICATION_SECRET}"
errorHandler = "Example.handler.ErrorHandler"
}
}
请证明我错了!或提出一个想法! 那里有hocon格式到yaml格式解析器吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。