为了账号安全,请及时绑定邮箱和手机立即绑定

当我在转换“Id”后将 [] 字节解组为结构时出现 json 问题不正确

当我在转换“Id”后将 [] 字节解组为结构时出现 json 问题不正确

Go
茅侃侃 2022-07-25 10:20:46
当我在转换“Id”不正确后将 [] 字节解组为结构时,我遇到了 json 问题编号:1606146401088049402 => 1606146401088049400`{"status":200,"success":true,"data":{"id":1606146401088049402,"created_at":"2020-11-23T22:46:41.092+07:00","updated_at":"2020-11-23T22:46:41.092+07:00","role":[{"code":"admin","name":"admin"}],"userName":"","phone":"0385666301","email":"congnguyen008@gmail.com","name":"","gender":"","title":"","firstName":"Nguyên","lastName":"Nguyễn","fullName":"Nguyên Nguyễn","displayName":"Nguyên Nguyễn","company":"","department":"","photo":"0385666301","addresses":"","phoneNumber":"","active":true,"lastTimeLogin":"2020-12-23T09:27:30.72+07:00","logged":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDg2OTQwNTAsImlkIjoiMTYwNjE0NjQwMTA4ODA0OTQwMiIsIm5hbWUiOiJOZ3V5w6puIE5ndXnhu4VuIiwicm9sZSI6W3siY29kZSI6ImFkbWluIiwibmFtZSI6ImFkbWluIn1dfQ.Spj_wWPxRrs2tYYhCmNCWaZVWVack74k9ab1FpeQsf8","time_login":"2020-12-23 09:27:30.720385 +0700 +07 m=+56.589410521","refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDkyOTUyNTAsImlkIjoiMTYwNjE0NjQwMTA4ODA0OTQwMiIsIm5hbWUiOiJOZ3V5w6puIE5ndXnhu4VuIiwicm9sZSI6W3siY29kZSI6ImFkbWluIiwibmFtZSI6ImFkbWluIn1dfQ.mO08BTq9SUns7OPCOrDeUbZojYkw3tjUaMeIQ_e2e2U"}}}`代码https://play.golang.org/p/MKmkLGPfwFafunc main() {    jsonData := `{"status":200,"success":true,"data":{"id":1606146401088049402}}`    response := Response{}    err := json.Unmarshal([]byte(jsonData), &response)    if err != nil {        panic(err)    }    user := User{}    userJson, _ := json.Marshal(response.Data)    json.Unmarshal(userJson, &user)    fmt.Println(user.Id)    fmt.Printf("%T", user.Id)}type User struct {    Id       int64  `json:"id" gorm:"primarykey"`    UserName string `json:"userName"`}
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

如果你想推迟 json 处理.. 而不是使用接口,编组然后解组,你可以使用json.RawMessage,像这样:

https://play.golang.org/p/LR1OXWpk_sF

这消除了Marshal操作和错误类型转换的问题。


查看完整回答
反对 回复 2022-07-25
?
翻阅古今

TA贡献1780条经验 获得超5个赞

要将 JSON 解组为接口值,Unmarshal 将其中之一存储在接口值中:float64,用于 JSON 数字


float64 类型产生错误的解组。


https://golang.org/pkg/encoding/json/#Unmarshal


type Response struct {

    Status  int         `json:"status"`

    Success bool        `json:"success"`

    Data    Datam       `json:"data,omitempty"`

    Message string      `json:"message,omitempty"`

    Input   interface{} `json:"input,omitempty"`

    Error   error       `json:"error,omitempty"`

    Paging  interface{} `json:"paging,omitempty"`

}

type Datam struct{

    Id int64 `json:"id"`

}

正确解组给定的 id。


查看完整回答
反对 回复 2022-07-25
  • 2 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信