35 lines
516 B
Go
35 lines
516 B
Go
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
|
|
}
|