解组未知格式的 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中文网其他相关文章!