JSON 데이터를 직렬화할 때 < >.
json.Marshal의 기본 동작은 사용자 정의 가능한 이스케이프 옵션을 지원하지 않습니다. 그러나 사용자 정의 Marshaler 구현이 도입되면서 이 동작을 재정의할 수 있습니다.
구조체에 대해 사용자 정의 MarshalJSON 메서드를 구현하세요.
func (t *Track) MarshalJSON() ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buffer.Bytes(), err }
이 구현은 JSON 인코더 내에서 EscapeHTML을 false로 설정하여 HTML 이스케이프를 방지합니다. 엔터티.
보다 일반적인 접근 방식을 위해 임의의 구조체에 사용자 정의 마샬링을 적용하는 함수를 정의합니다.
func JSONMarshal(t interface{}) ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buffer.Bytes(), err }
이 재사용 가능한 함수는 다음과 같이 사용할 수 있습니다. HTML이 필요한 구조체에 대해 HTML 이스케이프를 피하세요.
이러한 접근 방식 중 하나를 사용하려면 대상 구조체 유형에서 JSON() 또는 JSONMarshal()을 호출하고 필요에 따라 결과 바이트 슬라이스를 처리하면 됩니다.
이 해결 방법은 오직 적용 가능하다는 점을 기억하세요. 직렬화되는 데이터를 완전히 제어할 수 있는 경우. 외부 코드나 타사 라이브러리가 관련된 경우 예상되는 이스케이프 동작과의 호환성을 보장하는 것이 중요합니다.
위 내용은 Go에서 HTML 이스케이프 없이 JSON 마샬링을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!