首页 > 后端开发 > Golang > 如何在 Go 中将 JSON 文件读取为对象?

如何在 Go 中将 JSON 文件读取为对象?

Mary-Kate Olsen
发布: 2024-11-15 00:57:02
原创
325 人浏览过

How Do You Read JSON Files as Objects in Go?

在 Go 中将 JSON 文件读取为对象

在 Go 中,尝试读取 JSON 文件并将其解析为对象时可能会遇到困难JSON 对象。

失败的尝试

将 JSON 文件读取为对象的一些失败尝试包括:

  • 尝试 1:
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read
var data interface{}
err := json.Unmarshal(plan, data)
登录后复制

这会导致错误“json: Unmarshal(nil)”。

  • 尝试 2:
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
登录后复制

这会产生一个字符串输出,但将其转换为字符串会使其无法作为 JSON 对象循环。

解决方案

解决这个问题的关键在于json.Unmarshal指向的值。它必须是一个指针。

plan, _ := ioutil.ReadFile(filename)
var data interface{}
err := json.Unmarshal(plan, &data)
登录后复制

类型断言

在 unmarshal 中使用空接口时,需要使用类型断言来获取底层值,就像原生 Go 一样类型:

bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null
登录后复制

最佳实践

强烈建议使用具体结构通过 Unmarshal 填充 JSON 数据。这提供了更好的清晰度并避免了类型断言的需要。

以上是如何在 Go 中将 JSON 文件读取为对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板