序列化JSON 資料時,通常需要排除HTML 實體編碼以確保準確表示字符,例如
和>。
自訂Marshaler
func (t *Track) MarshalJSON() ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buffer.Bytes(), err }為您的結構實作自訂MarshalJSON 方法:
通用解決方案
func JSONMarshal(t interface{}) ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buffer.Bytes(), err }對於更通用的方法,定義一個將自訂封送處理應用於任意結構的函數:
用法範例
要使用其中一種方法,只需呼叫JSON() 或JSONMarshal() 在您的目標結構類型上,並根據需要處理產生的位元組切片。
請記住,此解決方法僅在您完全控制要序列化的資料時才適用。如果涉及外部程式碼或第三方程式庫,則必須確保與其預期的轉義行為相容。以上是如何在 Go 中實作 JSON 編組而不需要 HTML 轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!