Декодирование 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
Ответы
Ответ 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