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