package rep import ( "encoding/json" "fmt" ) func ParseJson(inp string) coderep { var raw interface{} err := json.Unmarshal([]byte(inp), &raw) if err != nil { fmt.Println(err) return nil } rep := prepare(raw) return rep } func prepare(raw interface{}) coderep { switch ri := raw.(type) { case []interface{}: c := code{} for _, it := range ri { c = append(c, it) } return c case map[string]interface{}: m := module{} for k, v := range ri { m[k] = v } return m } return nil }