diff --git a/json/codec.go b/json/codec.go index 77fe264..ceaffad 100644 --- a/json/codec.go +++ b/json/codec.go @@ -1065,51 +1065,51 @@ type sliceHeader struct { var ( nullType = reflect.TypeOf(nil) - boolType = reflect.TypeOf(false) - - intType = reflect.TypeOf(int(0)) - int8Type = reflect.TypeOf(int8(0)) - int16Type = reflect.TypeOf(int16(0)) - int32Type = reflect.TypeOf(int32(0)) - int64Type = reflect.TypeOf(int64(0)) - - uintType = reflect.TypeOf(uint(0)) - uint8Type = reflect.TypeOf(uint8(0)) - uint16Type = reflect.TypeOf(uint16(0)) - uint32Type = reflect.TypeOf(uint32(0)) - uint64Type = reflect.TypeOf(uint64(0)) - uintptrType = reflect.TypeOf(uintptr(0)) - - float32Type = reflect.TypeOf(float32(0)) - float64Type = reflect.TypeOf(float64(0)) - - bigIntType = reflect.TypeOf(new(big.Int)) - numberType = reflect.TypeOf(json.Number("")) - stringType = reflect.TypeOf("") - stringsType = reflect.TypeOf([]string(nil)) - bytesType = reflect.TypeOf(([]byte)(nil)) - durationType = reflect.TypeOf(time.Duration(0)) - timeType = reflect.TypeOf(time.Time{}) - rawMessageType = reflect.TypeOf(RawMessage(nil)) + boolType = reflect.TypeFor[bool]() + + intType = reflect.TypeFor[int]() + int8Type = reflect.TypeFor[int8]() + int16Type = reflect.TypeFor[int16]() + int32Type = reflect.TypeFor[int32]() + int64Type = reflect.TypeFor[int64]() + + uintType = reflect.TypeFor[uint]() + uint8Type = reflect.TypeFor[uint8]() + uint16Type = reflect.TypeFor[uint16]() + uint32Type = reflect.TypeFor[uint32]() + uint64Type = reflect.TypeFor[uint64]() + uintptrType = reflect.TypeFor[uintptr]() + + float32Type = reflect.TypeFor[float32]() + float64Type = reflect.TypeFor[float64]() + + bigIntType = reflect.TypeFor[*big.Int]() + numberType = reflect.TypeFor[json.Number]() + stringType = reflect.TypeFor[string]() + stringsType = reflect.TypeFor[[]string]() + bytesType = reflect.TypeFor[[]byte]() + durationType = reflect.TypeFor[time.Duration]() + timeType = reflect.TypeFor[time.Time]() + rawMessageType = reflect.TypeFor[RawMessage]() numberPtrType = reflect.PointerTo(numberType) durationPtrType = reflect.PointerTo(durationType) timePtrType = reflect.PointerTo(timeType) rawMessagePtrType = reflect.PointerTo(rawMessageType) - sliceInterfaceType = reflect.TypeOf(([]any)(nil)) - sliceStringType = reflect.TypeOf(([]any)(nil)) - mapStringInterfaceType = reflect.TypeOf((map[string]any)(nil)) - mapStringRawMessageType = reflect.TypeOf((map[string]RawMessage)(nil)) - mapStringStringType = reflect.TypeOf((map[string]string)(nil)) - mapStringStringSliceType = reflect.TypeOf((map[string][]string)(nil)) - mapStringBoolType = reflect.TypeOf((map[string]bool)(nil)) - - interfaceType = reflect.TypeOf((*any)(nil)).Elem() - jsonMarshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() - jsonUnmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() - textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() - textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() + sliceInterfaceType = reflect.TypeFor[[]any]() + sliceStringType = reflect.TypeFor[[]any]() + mapStringInterfaceType = reflect.TypeFor[map[string]any]() + mapStringRawMessageType = reflect.TypeFor[map[string]RawMessage]() + mapStringStringType = reflect.TypeFor[map[string]string]() + mapStringStringSliceType = reflect.TypeFor[map[string][]string]() + mapStringBoolType = reflect.TypeFor[map[string]bool]() + + interfaceType = reflect.TypeFor[any]() + jsonMarshalerType = reflect.TypeFor[Marshaler]() + jsonUnmarshalerType = reflect.TypeFor[Unmarshaler]() + textMarshalerType = reflect.TypeFor[encoding.TextMarshaler]() + textUnmarshalerType = reflect.TypeFor[encoding.TextUnmarshaler]() bigIntDecoder = constructJSONUnmarshalerDecodeFunc(bigIntType, false) )