使用未知大小的数组解组 JSON
通过 JSON 检索数据时,经常会遇到返回的 JSON 可能有也可能没有大批。例如,当请求智能电表列表时,它可能作为“gwrcmd”下的单个元素被接收。然而,当请求用电量时,它可能会作为“gwrcmd”数组返回。
这种歧义带来了编组挑战,因为 Go 结构需要数组和单个元素的显式定义。为了解决这个问题,json.Unmarshal 可用于返回单个 struct { } 或基于 JSON 结构的数组 []struct { }。
但是,如果预期的结果,json.Unmarshal 可能会遇到错误类型与 JSON 结构冲突。要解决此问题,可以创建第二个结构来复制第一个结构,但使用“Gwrcmd”切片除外。或者,更强大的方法涉及使用 json.RawMessage 捕获未知类型的 JSON 值,并根据其内容执行进一步的解组。这避免了仅根据第一个字节确定数组类型的猜测。
提供的 Go 代码片段中演示了两种方法的示例。此外,还列出了相关资源以供进一步探索。
以上是如何在 Go 中解组未知大小的 JSON 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!