我正在使用 Google 的go-jsonnet库来评估一些 jsonnet 文件。
我有一个函数,就像这样,它呈现一个 Jsonnet 文档:
// Takes a list of jsonnet files and imports each one and mixes them with "+"
func renderJsonnet(files []string, param string, prune bool) string {
// empty slice
jsonnetPaths := files[:0]
// range through the files
for _, s := range files {
jsonnetPaths = append(jsonnetPaths, fmt.Sprintf("(import '%s')", s))
}
// Create a JSonnet VM
vm := jsonnet.MakeVM()
// Join the slices into a jsonnet compat string
jsonnetImport := strings.Join(jsonnetPaths, "+")
if param != "" {
jsonnetImport = "(" + jsonnetImport + ")" + param
}
if prune {
// wrap in std.prune, to remove nulls, empty arrays and hashes
jsonnetImport = "std.prune(" + jsonnetImport + ")"
}
// render the jsonnet
out, err := vm.EvaluateSnippet("file", jsonnetImport)
if err != nil {
log.Panic("Error evaluating jsonnet snippet: ", err)
}
return out
}
这个函数当前返回一个字符串,因为 jsonnetEvaluateSnippet
函数返回一个字符串。
我现在要做的是使用go-prettyjson库渲染结果 JSON。但是,因为我输入的 JSON 是一个字符串,所以它不能正确呈现。
所以,一些问题:
- 我可以将返回的 JSON 字符串转换为 JSON 类型,而无需事先知道将其编组为什么结构
- 如果没有,我可以以其他方式以漂亮的方式呈现 json 吗?
- 有没有我在这里遗漏的选项、功能或方法可以让这更容易?