Я использую библиотеку 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
}
Эта функция в настоящее время возвращает строку, потому что функция jsonnet EvaluateSnippet
возвращает строку.
Теперь я хочу визуализировать этот результат в формате JSON, используя библиотеку go-prettyjson . Однако, поскольку JSON, который я передаю, является строкой, он не рендерится правильно.
Итак, несколько вопросов:
- Могу ли я преобразовать возвращаемую строку JSON в тип JSON, не зная заранее, какую структуру нужно преобразовать в
- если нет, могу ли я сделать рендеринг JSON каким-то другим способом?
- Есть ли опция, функция или метод, которые мне здесь не хватает, чтобы сделать это проще?