func unmarshaledToJSONToken()

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
}