首页  >  文章  >  后端开发  >  如何在 Go 中解组意外的 JSON 结构?

如何在 Go 中解组意外的 JSON 结构?

Susan Sarandon
Susan Sarandon原创
2024-11-25 12:11:15862浏览

How to Unmarshal Unexpected JSON Structures in Go?

解组未知格式的 JSON 数据

当面对具有不可预测的结构和可变键的 JSON 数据时,它提出了解组的挑战将其转化为 Go 结构。本文将介绍如何有效处理此类情况。

解决方案

要解决此问题,建议采用两种方法:

方法1:使用Map

当按键未知时,使用map[string]interface{} 变量是解组 JSON 有效负载的合适选项。

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)

这里,映射变量“grades”将包含解组数据,其中键代表未知的主题名称,并且值是由学生姓名及其成绩组成的映射。

方法 2:使用 JSON 忽略未知键标记

如果首选结构体,可以使用 json:"-" 标记对其进行注释,以在 JSON 编组和解组期间忽略特定字段。这允许结构保存未编组的数据,同时排除未知键。

type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)

在这种情况下,结构“GradeData”仅包含“Grades”字段,它是科目名称和学生的映射等级,但 JSON 中的原始键名称不存在。 JSON 标签确保结构体的字段与所需的输出格式一致。

以上是如何在 Go 中解组意外的 JSON 结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn