首頁 > 後端開發 > 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學習者快速成長!