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

带有结构数组的 Golang 和 JSON

带有结构数组的 Golang 和 JSON

Go
Smart猫小萌 2021-09-13 16:08:13
我想创建一个GatewayInfo类型定义如下的 JSON :type SpanInfo struct {    imsi string    network string    network_status string    signal_quality int    slot int    state string}type GatewayInfo []SpanInfo网关信息是通过以下方式创建的:var gatewayInfo = make(GatewayInfo, nb_spans)要创建 JSON,我使用以下json.Marshal函数:gatewayInfo := getGatewayInfo(spans)log.Printf("Polling content: %s\n", gatewayInfo)jsonInfo, _ := json.Marshal(gatewayInfo)log.Printf("jsonInfo: %s\n", jsonInfo)不幸的是,结果不是我所期望的:2015/02/09 13:48:26 Polling content: [{652020105829193 20801 Registered (Roaming) %!s(int=17) %!s(int=2) } {652020105829194 20801 Registered (Roaming) %!s(int=16) %!s(int=3) } {652020105829192 20801 Registered (Roaming) %!s(int=19) %!s(int=1) } {652020105829197 20801 Registered (Roaming) %!s(int=19) %!s(int=4) }]2015/02/09 13:48:26 jsonInfo: [{},{},{},{}]正如我们所看到的,GatewayInfo实例有SpanInfo,但在 JSON 中我有空SpanInfo。
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您的结构字段必须导出(如果以大写字母开头,则导出字段),否则它们不会被编码:


结构值编码为 JSON 对象。每个导出的 struct 字段都成为对象的成员


要按预期获得 JSON 表示,请将代码更改为:


type SpanInfo struct {

    IMSI string `json:"imsi"`

    Network string `json:"network"`

    NetworkStatus string `json:"network_status"`

    SignalQuality int `json:"signal_quality"`

    Slot int `json:slot"`

    State string `json:"state"`

}


type GatewayInfo []SpanInfo


查看完整回答
反对 回复 2021-09-13
?
哔哔one

TA贡献1854条经验 获得超8个赞

该json包只能序列化结构的导出字段。更改您的结构,以大写字母开头所有字段,以便它们可以包含在输出中:


type SpanInfo struct {

    Imsi string

    Network string

    Network_status string

    Signal_quality int

    Slot int

    State string

}

查看完整回答
反对 回复 2021-09-13
?
白板的微信

TA贡献1883条经验 获得超3个赞

这不是一个新的答案。这只是对已接受答案的评论的合并。


来自原始查询


type SpanInfo struct {

    imsi string

    network string

    network_status string

    signal_quality int

    slot int

    state string

}

来自答案和评论 - 请注意,结构中每个字段的第一个字符现在是大写,并且每个字段都添加了 json 表示


type SpanInfo struct {

    IMSI string `json:"imsi"`

    Network string `json:"network"`

    NetworkStatus string `json:"network_status"`

    SignalQuality int `json:"signal_quality"`

    Slot int `json:slot"`

    State string `json:"state"`

}


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

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