首頁  >  文章  >  後端開發  >  如何在 Go 中解組具有不同回應格式的 JSON?

如何在 Go 中解組具有不同回應格式的 JSON?

Linda Hamilton
Linda Hamilton原創
2024-10-27 10:00:30662瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn