将JSON int解码为字符串

Shi*_*iki 18 go

我有这个简单的JSON字符串,我想在执行时user_id将其转换为字符串json.Unmarshal:

{"user_id": 344, "user_name": "shiki"}
Run Code Online (Sandbox Code Playgroud)

我试过这个:

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)
}
Run Code Online (Sandbox Code Playgroud)

但我只是得到这个错误:

panic: json: cannot unmarshal number into Go value of type string
Run Code Online (Sandbox Code Playgroud)

游乐场链接:http://play.golang.org/p/mAhKYiPDt0

Sim*_*ead 35

您可以使用Number作为别名的类型string:

type User struct {
    Id       json.Number `json:"user_id,Number"`
    Username string `json:"user_name"`
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在任何其他代码中简单地转换它:

stringNumber := string(userInstance.Id)
Run Code Online (Sandbox Code Playgroud)

游乐场:http://play.golang.org/p/kQ84VnvpWi

  • 我的天啊.*撞墙,桌子,把笔记本电脑扔到窗外*我一直在寻找为什么我不能将json经度转换成float64几小时(几天?)因为当没有时,源使用空的""字符串(不好)资源).所以,我可以为它做出特殊的解析.这太疯狂了."不能将数字解组成字符串","不能将字符串解组成float64","不能将X解组成XX".有一个"json.Number"?!?!哎呀.有效!+10000 (10认同)
  • 是否有关于 `,Number` 注释的文档? (2认同)