Подтвердить что ты не робот

Декодирование JSON int в строку

У меня есть эта простая строка JSON, где я хочу, чтобы user_id был преобразован в строку при выполнении json.Unmarshal:

{"user_id": 344, "user_name": "shiki"}

Я пробовал это:

type User struct {
  Id       string `json:"user_id,int"`
  Username string `json:"user_name"`
}

func main() {
  input := `{"user_id": 344, "user_name": "shiki"}`
  user := User{}
  err := json.Unmarshal([]byte(input), &user)
  if err != nil {
    panic(err)
  }

  fmt.Println(user)
}

Но я просто получаю эту ошибку:

panic: json: cannot unmarshal number into Go value of type string

Ссылка на игровое поле: http://play.golang.org/p/mAhKYiPDt0

4b9b3361

Ответ 1

Вы можете использовать тип Number, который является псевдонимом для string:

type User struct {
    Id       json.Number `json:"user_id,Number"`
    Username string `json:"user_name"`
}

Затем вы можете просто преобразовать его в любой другой код:

stringNumber := string(userInstance.Id)

Игровая площадка: http://play.golang.org/p/kQ84VnvpWi