Как вы уже заметили, это происходит потому, что вы передаете не целое число JSON 58
, а строку JSON "58"
.
Если вы измените свой пример ввода на
s := `{"count":{"FAN":58}}`
тогда ваш код работает как положено .
Вы можете написать собственный unmarshaller, но исправить проблему, пока unmarshalling, может оказаться не тем, что вам нужно;вместо этого найдите способ изменить конвейер данных и убедиться, что объект JSON должным образом очищен. Или, если это невозможно, сделайте так, как вы предлагаете, и вместо этого используйте map[string]string
, а затем исправьте типы данных после демонтажа.