go-scopes/forge/rep/json.go

35 lines
612 B
Go

package rep
import (
//"encoding/json"
json "gopkg.in/yaml.v3"
"git.sr.ht/~cco/go-scopes/logging/log"
)
func ParseJson(inp string) coderep {
return ParseJsonTo[interface{}](inp)
}
func ParseJsonTo[T any](inp string) coderep {
var data T
err := json.Unmarshal([]byte(inp), &data)
if err != nil {
log.Error(err).Msg("rep.ParseJson")
return nil
}
rep := prepare(data)
return rep
}
func prepare(raw interface{}) coderep {
switch ri := raw.(type) {
case []interface{}:
return makeCode(ri)
case map[string]interface{}:
return makeModule(ri)
default:
return makeRecord(ri)
}
return nil
}