将JSON int解码为字符串

时间:2014-06-29 22:27:02

标签: go

我有这个简单的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 个答案:

答案 0 :(得分:32)

您可以使用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