3 KiB
3 KiB
go-toml
Go library for the TOML format.
This library supports TOML version v0.4.0
Features
Go-toml provides the following features for using data parsed from TOML documents:
- Load TOML documents from files and string data
- Easily navigate TOML structure using Tree
- Mashaling and unmarshaling to and from data structures
- Line & column position data for all parsed elements
- Query support similar to JSON-Path
- Syntax errors contain line and column numbers
Import
import "github.com/pelletier/go-toml"
Usage example
Read a TOML document:
config, _ := toml.LoadString(`
[postgres]
user = "pelletier"
password = "mypassword"`)
// retrieve data directly
user := config.Get("postgres.user").(string)
// or using an intermediate object
postgresConfig := config.Get("postgres").(*toml.Tree)
password = postgresConfig.Get("password").(string)
Or use Unmarshal:
type Postgres struct {
User string
Password string
}
type Config struct {
Postgres Postgres
}
doc := []byte(`
[postgres]
user = "pelletier"
password = "mypassword"`)
config := Config{}
Unmarshal(doc, &config)
fmt.Println("user=", config.Postgres.User)
Or use a query:
// use a query to gather elements without walking the tree
results, _ := config.Query("$..[user,password]")
for ii, item := range results.Values() {
fmt.Println("Query result %d: %v", ii, item)
}
Documentation
The documentation and additional examples are available at godoc.org.
Tools
Go-toml provides two handy command line tools:
-
tomll
: Reads TOML files and lint them.go install github.com/pelletier/go-toml/cmd/tomll tomll --help
-
tomljson
: Reads a TOML file and outputs its JSON representation.go install github.com/pelletier/go-toml/cmd/tomljson tomljson --help
Contribute
Feel free to report bugs and patches using GitHub's pull requests system on pelletier/go-toml. Any feedback would be much appreciated!
Run tests
You have to make sure two kind of tests run:
- The Go unit tests
- The TOML examples base
You can run both of them using ./test.sh
.
License
The MIT License (MIT). Read LICENSE.