在 Go 中解编具有不同响应格式的 JSON
在使用外部端点时,您可能会遇到不同格式的 JSON 响应。处理这些变化可能具有挑战性,尤其是当您想要将响应构建为特定数据类型时。
困境
您面临着一个返回 JSON 的端点有两种格式:
面临的挑战是创建一个可以容纳两种响应格式的 Go 结构体。
一种简单的方法
最初,您考虑使用两个单独的结构体,一个对于每种格式。然而,这种方法并不理想,因为它需要多次解码尝试和错误处理。
更优雅的解决方案
更优雅的解决方案是将 JSON 解组到接口中{} 类型。 Interface{} 是 Go 中的一种特殊类型,可以保存任何值,无论其具体类型如何。
<code class="go">type Response struct { Message interface{} `json:"message"` }</code>
解组后,您可以使用类型断言或类型开关来检查 Message 字段的类型.
<code class="go">switch x := r.Message.(type) { case string: // Handle string message case []interface{}: // Handle array message default: // Handle unexpected type }</code>
这种方法允许您在单个结构中处理两种响应格式,从而提供更强大且可维护的解决方案。
以上是如何在 Go 中解组具有不同响应格式的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!