首页 > 后端开发 > Golang > 正文

如何在 Go 中解组具有不同响应格式的 JSON?

Linda Hamilton
发布: 2024-10-27 10:00:30
原创
670 人浏览过

How to Unmarshal JSON with Varying Response Formats in Go?

在 Go 中解编具有不同响应格式的 JSON

在使用外部端点时,您可能会遇到不同格式的 JSON 响应。处理这些变化可能具有挑战性,尤其是当您想要将响应构建为特定数据类型时。

困境

您面临着一个返回 JSON 的端点有两种格式:

  • 格式 1: { "message": "Message" }
  • 格式 2: { "message": ["ERROR_CODE"] }

面临的挑战是创建一个可以容纳两种响应格式的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!