尝试从 json 中删除第一个和最后一个方括号使用 helm 将数据注入 configmap
trying to remove first and last square brackets from json injecting data into configmap using helm
我在 JSON 文件中有数据,我正在使用 Helm 将每一行作为键值添加到 ConfigMap 中,但我需要删除第一个和最后一个大括号。
下面是JSON文件内容:
{
"type": "PurposeResourcesDefinition",
"version": "1.0",
"purposeId": "p#####",
"description": "Artifactory container registry",
"resources": [{
"type": "artifactory.containerregistry",
"name": "<repository name prefixed with the purpose>"
]
}
我正在使用以下 Helm 语法:
data:
{{ range .Files.Lines "foo/app.json" }}
{{ . }}{{ end }}
如何使用 Helm 模板删除周围的大括号?
如果您知道 {
和 }
会单独成行,您可以跳过它们。这不是特别可靠,但它适用于您展示的示例。
data:
{{- range .Files.Lines "foo/app.json" }}
{{- if and (ne . "{") (ne . "}") }}
{{ . }}
{{- end }}
在更高层次上,您似乎正在尝试读入 JSON 文件,然后将这些值作为 ConfigMap 的内容写出。由于 YAML 和 JSON 之间的语法相似性,去除前导和尾随大括号会起作用,但主动从一种格式转换为另一种格式可能会更好。 Helm 有 several undocumented conversion functions,包括 fromJson
和 toYaml
。所以你也可以这样写:
data: {{- .Files.Get "foo/app.json" | fromJson | toYaml | nindent 2 }}
我在 JSON 文件中有数据,我正在使用 Helm 将每一行作为键值添加到 ConfigMap 中,但我需要删除第一个和最后一个大括号。
下面是JSON文件内容:
{
"type": "PurposeResourcesDefinition",
"version": "1.0",
"purposeId": "p#####",
"description": "Artifactory container registry",
"resources": [{
"type": "artifactory.containerregistry",
"name": "<repository name prefixed with the purpose>"
]
}
我正在使用以下 Helm 语法:
data:
{{ range .Files.Lines "foo/app.json" }}
{{ . }}{{ end }}
如何使用 Helm 模板删除周围的大括号?
如果您知道 {
和 }
会单独成行,您可以跳过它们。这不是特别可靠,但它适用于您展示的示例。
data:
{{- range .Files.Lines "foo/app.json" }}
{{- if and (ne . "{") (ne . "}") }}
{{ . }}
{{- end }}
在更高层次上,您似乎正在尝试读入 JSON 文件,然后将这些值作为 ConfigMap 的内容写出。由于 YAML 和 JSON 之间的语法相似性,去除前导和尾随大括号会起作用,但主动从一种格式转换为另一种格式可能会更好。 Helm 有 several undocumented conversion functions,包括 fromJson
和 toYaml
。所以你也可以这样写:
data: {{- .Files.Get "foo/app.json" | fromJson | toYaml | nindent 2 }}