JSON по спецификации не имеет строгих типов
int32/int64 — там есть только number, а в Go при разборе encoding/json число сначала парсится в float64, если не указан конкретный тип.Есть несколько решений:
Использовать строки для больших чисел:
{"id": "9223372036854775807"}Использовать
json.Decoder.UseNumber():dec := json.NewDecoder(r)
dec.UseNumber()
Кастомный Unmarshal
Читать как
json.Number и вручную конвертировать в int64🐸 Библиотека Go для собеса