mirror of https://github.com/dnomd343/ClearDNS
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							1008 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							40 lines
						
					
					
						
							1008 B
						
					
					
				| package main | |
| 
 | |
| import ( | |
|     "encoding/json" | |
|     "fmt" | |
|     "github.com/BurntSushi/toml" | |
|     "gopkg.in/yaml.v3" | |
|     "os" | |
| ) | |
| 
 | |
| func parser(raw []byte) (interface{}, interface{}) { | |
|     var object interface{} | |
|     if err := json.Unmarshal(raw, &object); err == nil { // try json | |
|         return object, nil // json format | |
|     } | |
|     if err := toml.Unmarshal(raw, &object); err == nil { // try toml | |
|         return object, nil // toml format | |
|     } | |
|     if err := yaml.Unmarshal(raw, &object); err == nil { // try yaml | |
|         return object, nil // yaml format | |
|     } | |
|     return nil, nil // parser error | |
| } | |
| 
 | |
| func main() { | |
|     if len(os.Args) < 2 { // without argument | |
|         fmt.Printf("usage: toJSON [file]\n") | |
|         os.Exit(0) | |
|     } | |
|     raw, err := os.ReadFile(os.Args[1]) | |
|     if err != nil { | |
|         os.Exit(2) // file open failed | |
|     } | |
|     if object, err := parser(raw); err == nil { | |
|         ret, _ := json.Marshal(object) | |
|         fmt.Println(string(ret)) | |
|         os.Exit(0) | |
|     } | |
|     os.Exit(1) // unmarshal failed | |
| }
 | |
| 
 |