in wstl1/mapping_engine/util/jsonutil/jsonutil.go [714:758]
func unmarshaledToJSONToken(object interface{}) (JSONToken, error) {
if object == nil {
return nil, nil
}
var token JSONToken
switch o := object.(type) {
case int:
n := JSONNum(o)
token = n
case float64:
n := JSONNum(o)
token = n
case bool:
b := JSONBool(o)
token = b
case string:
s := JSONStr(o)
token = s
case []interface{}:
ja := make(JSONArr, 0, len(o))
for _, obj := range o {
co, err := unmarshaledToJSONToken(obj)
if err != nil {
return nil, err
}
ja = append(ja, co)
}
token = ja
case map[string]interface{}:
jc := make(JSONContainer)
for k, v := range o {
cv, err := unmarshaledToJSONToken(v)
if err != nil {
return nil, err
}
jc[k] = &cv
}
token = jc
default:
return nil, fmt.Errorf("unable to wrap a %T in JSON wrapper types", o)
}
return token, nil
}