登录
首页 >  Golang >  Go问答

json解析成功,但解析结果为空

来源:stackoverflow

时间:2024-03-02 19:09:25 241浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《json解析成功,但解析结果为空》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

简单的go-lang程序,用于将json字符串解析为自定义结构。

package main

import (
    "encoding/json"
    "fmt"
)

type IpInfo struct {
    ip string `json:"ip"`
}

type MyData struct {
    msg string `json:"msg"`
    status_code int `json:"status_code"`
    data []IpInfo `json:"data"`
}

func main() {
    json_data := []byte(`{"msg": "success", "status_code": 0, "data": [{"ip": "127.0.0.1"}]}`)
    my_data := MyData{}
    err := json.Unmarshal(json_data, &my_data)
    if err != nil {
        fmt.Println("error:", err)
    }
    fmt.Println(my_data.msg)
}

运行这段代码后我什么也没得到,但是“成功”是预期的。


解决方案


您必须从结构中导出字段。

package main

import (
    "encoding/json"
    "fmt"
)

type IpInfo struct {
    Ip string `json:"ip"`
}

type MyData struct {
    Msg        string             `json:"msg"`
    StatusCode int                `json:"status_code"`
    Data       []struct{ IpInfo } `json:"data"`
}

func main() {
    jsonData := []byte(`{"msg": "success", "status_code": 0, "data": [{"ip": "127.0.0.1"}]}`)
    myData := MyData{}
    err := json.Unmarshal(jsonData, &myData)

    if err != nil {
        fmt.Println("error:", err)
    }

    fmt.Println(myData.Msg)
}

输出:success

此外,我建议阅读 go 的命名约定和格式 here。并且不要忘记在文件上运行 go fmt

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>