使用不一致欄位解組JSON:處理字串和陣列
將JSON 資料解組到Go 結構體時,處理欄位可能具有挑戰性其類型可能有所不同。例如,欄位在大多數情況下可能是字串,但有時可能是字串陣列。為了解決這個問題,我們提出了一個利用 Go 強大的 JSON 解析能力的解決方案。
使用 json.RawMessage 擷取變化欄位
處理不一致 JSON 欄位的關鍵關鍵在於使用 json.RawMessage 擷取原始資料。此類型是儲存未解析的 JSON 值的位元組切片。透過儲存原始數據,我們可以靈活地根據其特定類型稍後對其進行解析。
隱藏DisplayName 字段並在解碼後填充它
以防止為了防止解碼器在獲得相關數據之前嘗試解釋DisplayName 字段,我們使用JSON“-”名稱隱藏它。此名稱指示解碼器在初始解碼期間忽略該欄位。頂級 JSON 解碼後,我們根據解析的原始資料手動填入 DisplayName 欄位。
處理各種類型的原始資料
取決於無論原始資料是字串還是字串數組,我們都如下進行:
整合到循環中MyListings
要處理項目清單(例如MyListings),我們可以迭代每個項目並執行與上述相同的解組邏輯。這使我們能夠處理每個項目的 DisplayName 欄位中的任何不一致。
使用自訂解組器封裝邏輯
如果資料模型中的多個欄位可能不一致類型,將邏輯封裝在實作json.Unmarshaler 介面的自訂類型中是有益的。這簡化了流程並減少了重複。
總之,透過使用 json.RawMessage 並隱藏變化的字段,我們可以有效地解組具有不一致字段的 JSON 數據,確保正確捕獲和解析所有必要的數據。提供的範例和遊樂場連結演示了實踐中的解決方案。
以上是如何在 Go 中處理不一致的 JSON 欄位(字串與陣列)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!