如何使用Helm的toJson/toRawJson且不自动添加引号?
问题:Helm中处理数据库连接字符串转义并输出到ConfigMap的JSON配置
我在values.yaml中有一个无引号的数据库连接字符串变量:
ActionLogsConnectionString: Database=ActionLogs;Server=SQL_DEV;User Id=sa;Password=Y19|yx\dySh53&h
目标是将其输出到ConfigMap中,作为.NET应用的JSON配置文件,同时追加应用名称。直接引用时结果正常,但斜杠未转义;使用toRawJson可转义斜杠,但会添加额外引号导致结果异常:
"ActionLogsConnectionString": ""Database=ActionLogs;Server=SQL_DEV;User Id=sa;Password=Y19|yx\\dySh53&h";Application Name=Asp;"
请问如何使用toRawJson且不添加额外引号?
解决方法
核心是先完成字符串拼接,再用toRawJson处理整个结果,避免手动嵌套引号。
在Helm模板中按以下方式编写:
apiVersion: v1 kind: ConfigMap metadata: name: app-config data: appsettings.json: |- { "ActionLogsConnectionString": {{ printf "%s;Application Name=Asp;" .Values.ActionLogsConnectionString | toRawJson }} }
关键说明:
- 拼接字符串:用
printf把原始连接字符串和追加的应用名称合并成完整字符串,确保内容是我们需要的最终格式。 - 转义处理:将拼接后的结果直接传入
toRawJson,它会自动处理字符串中的特殊字符(比如把\转义为\\),同时输出符合JSON规范的单引号包裹字符串,不会出现额外嵌套引号的问题。
最终生成的ConfigMap中JSON配置会是正确格式:
{ "ActionLogsConnectionString": "Database=ActionLogs;Server=SQL_DEV;User Id=sa;Password=Y19|yx\\dySh53&h;Application Name=Asp;" }
内容的提问来源于stack exchange,提问作者Dunge
相关产品推荐
相关产品推荐

