在本文中,我們解決了在Go 中使用SQL NULL 值的困境以及如何處理它們有效的JSON 表示。
使用 Go 類型(例如 int64 和 string)時,無法直接儲存 null 值。但是,我們可以使用 sql.NullInt64 和 sql.NullString 來實現此目的。然而,當這些類型嵌入到結構體中並使用 json 套件轉換為 JSON 時,產生的格式與使用常規 int64 和 string 類型時獲得的格式不同。
出現這種差異是因為 JSON 表示sql.Null*** 類型包括一個附加級別,因為這些類型本質上是結構本身。因此,需要一種解決方法來實現所需的 JSON 格式。
與其放棄在 SQL 資料庫中使用 NULL 值,一個可行的解決方案是建立一個實作 json 的自訂類型。 Marshaller 和 json.Unmarshaler 介面。透過嵌入 sql.NullInt64 類型,我們保留了 SQL 方法,同時獲得了對 JSON 處理的控制。以下是示範此方法的範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
透過使用此自訂類型取代 sql.NullInt64,JSON 表示形式與所需的格式一致。
要示範此解決方案,您可以在Go Playground 中執行以下程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
輸出將類似於以下程式碼:
1 |
|
這種方法允許無縫處理SQL 和JSON 中的NULL 值,保持資料表示的一致性。
以上是如何在 Go 中高效處理 SQL NULL 值及其 JSON 表示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!