登录
首页 >  Golang >  Go问答

在golang中如何解析 JSON 数据

来源:stackoverflow

时间:2024-03-26 15:45:32 345浏览 收藏

在 Go 中解析 JSON 数据时,用户需要定义数据结构与 JSON 对象匹配,并使用 `json.Unmarshal()` 函数进行反序列化。然而,用户在尝试解析一个特定 JSON 字符串时遇到了困难,因为示例中 JSON 对象的格式与文档不同。本文提供了解决方案,包括将数据结构更新为单个对象,并将 JSON 反序列化为该对象,而不是其数组形式。

问题内容

我在解组访问 golang 服务中的 json 字符串的值时遇到问题。

我阅读了 golang 的文档,但示例中的 json 对象的格式都不同。

从我的 api 中我得到以下 json 字符串:

{"newdepartment":
    {
    "newdepname":"testabt",
    "newdepcompany":2,
    "newdepmail":"[email protected]"
    }
}

在go中我定义了以下数据类型:

type newdepartment struct {
    newdepname string `json:"newdepname"`
    newdepcompany   int `json:"newdepcompany"`
    newdepmail string `json:"newdepmail"`
}

type newdeps struct {
    newdeps   []newdepartment `json:"newdepartment"`
}

我尝试解组 json(来自请求正文)并访问值,但无法获得任何结果

var data types.NewDepartment
    errDec := json.Unmarshal(reqBody, &data)

fmt.Println("AddDepartment JSON string got: " + data.NewDepName)

但它不包含字符串 - 没有显示任何内容,但解组或 println 时没有错误。

感谢您的帮助。


解决方案


你就快到了。

第一个更新是使 newdeps.newdeps 成为单个对象,而不是数组(根据提供的 json)。

第二个更新是将 json 反序列化为 newdeps,而不是 newdepartment

工作代码:

type NewDepartment struct {
    NewDepName string      `json:"newDepName"`
    NewDepCompany int      `json:"newDepCompany"`
    NewDepMail string      `json:"newDepMail"`
}

type NewDeps struct {
    NewDeps NewDepartment  `json:"NewDepartment"`
}

func main() {
    var data NewDeps
    json.Unmarshal([]byte(body), &data)

    fmt.Println("AddDepartment JSON string got: " + data.NewDeps.NewDepName)
}

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

终于介绍完啦!小伙伴们,这篇关于《在golang中如何解析 JSON 数据》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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