toml.go 667 B

123456789101112131415161718192021222324252627282930313233343536
  1. package json
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "io"
  6. "github.com/pelletier/go-toml"
  7. )
  8. // FromTOML convert toml to json
  9. func FromTOML(v []byte) ([]byte, error) {
  10. tomlReader := bytes.NewReader(v)
  11. jsonStr, err := jsonFromTomlReader(tomlReader)
  12. if err != nil {
  13. return nil, err
  14. }
  15. return []byte(jsonStr), nil
  16. }
  17. func jsonFromTomlReader(r io.Reader) (string, error) {
  18. tree, err := toml.LoadReader(r)
  19. if err != nil {
  20. return "", err
  21. }
  22. return mapToJSON(tree)
  23. }
  24. func mapToJSON(tree *toml.Tree) (string, error) {
  25. treeMap := tree.ToMap()
  26. bytes, err := json.MarshalIndent(treeMap, "", " ")
  27. if err != nil {
  28. return "", err
  29. }
  30. return string(bytes[:]), nil
  31. }