>백엔드 개발 >Golang >Go에서 HTML 이스케이프 없이 JSON 마샬링을 달성하는 방법은 무엇입니까?

Go에서 HTML 이스케이프 없이 JSON 마샬링을 달성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-10 07:27:08385검색

How to Achieve JSON Marshalling without HTML Escaping in Go?

HTML 이스케이프 없이 JSON 마샬링

JSON 데이터를 직렬화할 때 < >.

json.Marshal의 기본 동작은 사용자 정의 가능한 이스케이프 옵션을 지원하지 않습니다. 그러나 사용자 정의 Marshaler 구현이 도입되면서 이 동작을 재정의할 수 있습니다.

Custom 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.