【问题标题】:Can anyone help to parse HCL?任何人都可以帮助解析 HCL 吗?
【发布时间】:2018-04-22 17:47:22
【问题描述】:

我将使用 this repository 解析 HCL 配置文件。

package main

import (
    "fmt"
    hclParser "github.com/hashicorp/hcl/hcl/parser"
)

const (
    EXAMPLE_CONFIG_STRING = "log_dir = \"/var/log\""
)

func main() {
    // parse HCL configuration
    if astFile, err := hclParser.Parse([]byte(EXAMPLE_CONFIG_STRING)); err == nil {
        fmt.Println(astFile)
    } else {
        fmt.Println("Parsing failed.")
    }
}

在这种情况下如何解析log_dir

【问题讨论】:

    标签: go hcl


    【解决方案1】:

    github.com/hashicorp/hcl/hcl/parser 是一个低级包。请改用high-level API

    package main
    
    import (
            "fmt"
    
            "github.com/hashicorp/hcl"
    )
    
    type T struct {
            LogDir string `hcl:"log_dir"`
    }
    
    func main() {
            var t T
            err := hcl.Decode(&t, `log_dir = "/var/log"`)
            fmt.Println(t.LogDir, err)
    }
    

    如果您真的想自己处理 AST,也可以使用 DecodeObject。

    【讨论】:

    • 非常感谢。这对我很有帮助。
    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多