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

golang 类型转换。结构体接口

golang 类型转换。结构体接口

Go
智慧大石 2021-12-20 09:43:10
我不习惯golang。当我请求时,我得到了以下日志。我想解析日志并将其存储为struct类型。有人告诉我该怎么做吗?提前致谢。例如 :type ResultStruct struct{    id int    guid string    name string}for k, v := range data {    fmt.Print(v.id) fmt.Print(v.guid) fmt.Print(v.name)}[日志]数据:[地图[id:90001 guid:a name:test1] map[guid:b name:test2 id:90002] map[name:test3 id:90003 guid:c]][来源]response := httpClient.Do(request)var data interface{}rawdata, err := ioutil.ReadAll(response.body)json.Unmarshal(rawdata, &data)fmt.Println("data :", data)
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

这是 Go 新程序员的常见错误。


由于语言设计,json.Unmarshal只能编组到导出字段中。


只需将每个字段名称的第一个字母大写即可导出它们。您可以选择添加字段标签来告诉 json.Marshal 使用什么键名。仅当您要使用json.Marshal.


type ResultStruct struct{

    Id   int    `json:"id"`

    Guid string `json:"guid"`

    Name string `json:"name"`

}

报价encoding/json包:


要将 JSON 解组为结构,Unmarshal 将传入的对象键与 Marshal 使用的键(结构字段名称或其标签)进行匹配,更喜欢精确匹配,但也接受不区分大小写的匹配。Unmarshal 只会设置结构的导出字段。


查看完整回答
反对 回复 2021-12-20
?
蓝山帝景

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

你得到一个数组,使用encoding/json包解组它。


type ResultStruct struct {

    id int      `json:"id"`

    guid string `json:"guid"`

    name string `json:"name"`

}

type Result struct {

    Data []ResultStruct `json:"data"`

}


response := httpClient.Do(request)

var data Result

decErr := json.NewDecoder(response.body).Decode(&data)

fmt.Println(decErr, data)

这应该将数据解组为数组。


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

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