序列化 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中文网其他相关文章!