无法将字符串解组为int64类型的Go值

Max*_*Max 32 jquery json marshalling go unmarshalling

我有结构

type tySurvey struct {
    Id     int64            `json:"id,omitempty"`
    Name   string           `json:"name,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

json.Marshal在HTML页面中写了JSON字节.jQuery修改name对象中的字段并使用jQueries编码对象JSON.stringify,jQuery将字符串发布到Go处理程序.

id 字段编码为字符串.

发送:{"id":1}收到:{"id":"1"}

问题是json.Unmarshal无法解组JSON,因为id它不再是整数.

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

处理此类数据的最佳方法是什么?我不希望手动转换每个字段.我希望编写紧凑,无错误的代码.

行情也不算太糟糕.JavaScript与int64不兼容.

我想学习使用int64值中的字符串值解组json的简单方法.

Dmi*_*ing 57

这可以通过添加,string到您的标记来处理,如下所示:

type tySurvey struct {
   Id   int64  `json:"id,string,omitempty"`
   Name string `json:"name,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

这可以在Marshal的文档中找到.

请注意,您无法通过指定解码空字符串,omitempty因为它仅在编码时使用.

  • 如果“id”不是整数,那么这将起作用。否则,您会收到错误“无效使用字符串结构标记...” (4认同)

小智 9

json.Number

type tySurvey struct {
    Id     json.Number      `json:"id,omitempty"`
    Name   string           `json:"name,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案。接受的答案不起作用 (2认同)