diff --git a/toJSON/go.mod b/toJSON/go.mod new file mode 100644 index 0000000..77fd623 --- /dev/null +++ b/toJSON/go.mod @@ -0,0 +1,8 @@ +module toJSON + +go 1.18 + +require ( + github.com/BurntSushi/toml v1.2.0 + gopkg.in/yaml.v3 v3.0.1 +) diff --git a/toJSON/go.sum b/toJSON/go.sum new file mode 100644 index 0000000..9eb3253 --- /dev/null +++ b/toJSON/go.sum @@ -0,0 +1,6 @@ +github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= +github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/toJSON/main.go b/toJSON/main.go new file mode 100644 index 0000000..d3f3f2d --- /dev/null +++ b/toJSON/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "encoding/json" + "fmt" + "github.com/BurntSushi/toml" + "gopkg.in/yaml.v3" +) + +var jsonTest = ` +{ + "field1": "test", + "field2": { + "field3": "value", + "field4": [ + 42, + 1024 + ] + } +} +` + +var yamlTest = ` +field1: test +field2: + field3: value + field4: [42, 1024] +` + +var tomlTest = ` +field1 = "test" + +[field2] +field3 = "value" +field4 = [ 42, 1_024 ] +` + +func parser(raw string) (interface{}, interface{}) { + var object interface{} + if err := json.Unmarshal([]byte(raw), &object); err == nil { // try json + return object, nil // json format + } + if err := toml.Unmarshal([]byte(raw), &object); err == nil { // try toml + return object, nil // toml format + } + if err := yaml.Unmarshal([]byte(raw), &object); err == nil { // try yaml + return object, nil // yaml format + } + return nil, nil // parser error +} + +func main() { + //if object, err := parser(jsonTest); err == nil { + //if object, err := parser(yamlTest); err == nil { + if object, err := parser(tomlTest); err == nil { + b, _ := json.Marshal(object) + fmt.Println(string(b)) + } +}