code: func Unmarshal(data []byte, v interface{}) error {
  	if atomic.LoadUintptr(&validate) == 1 {
  		_, ok := validpayload(data, 0)
  		if !ok {
  			return errors.New("invalid json")
  		}
  	}
  	if v := reflect.ValueOf(v); v.Kind() == reflect.Ptr {
  		assign(ParseBytes(data), v)
  	}
  	return nil
  }
docs: // Unmarshal loads the JSON data into the value pointed to by v.
  //
  // This function works almost identically to json.Unmarshal except  that
  // gjson.Unmarshal will automatically attempt to convert JSON values to any Go
  // type. For example, the JSON string "100" or the JSON number 100 can be equally
  // assigned to Go string, int, byte, uint64, etc. This rule applies to all types.
  //
  // Deprecated: Use encoder/json.Unmarshal instead