> 백엔드 개발 > Golang > Go의 `json.Marshal`이 `[]byte`를 Base64 문자열로 인코딩하는 이유는 무엇입니까?

Go의 `json.Marshal`이 `[]byte`를 Base64 문자열로 인코딩하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-10 01:23:10
원래의
273명이 탐색했습니다.

Why Does Go's `json.Marshal` Encode `[]byte` as a Base64 String?

[]byte를 JSON으로 마샬링

Go에서 []byte를 JSON으로 마샬링하는 것은 다른 데이터 유형과 약간 다릅니다. JSON 패키지는 바이트를 배열로 직접 인코딩하는 대신 []byte를 base64로 인코딩된 문자열로 인코딩합니다. 이 동작은 인코딩/json 문서에 명시적으로 명시되어 있습니다.

Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.
로그인 후 복사

Base64-Encoded String Output

귀하의 경우 json.Marshal( 그룹)에는 "AAAAAQID"가 포함되어 있습니다. 이는 []바이트 슬라이스의 base64 인코딩을 나타냅니다.

originalBytes := []byte{0, 0, 0, 1, 2, 3}
encodedString := base64.StdEncoding.EncodeToString(originalBytes)

fmt.Println(encodedString) // Output: AAAAAQID
로그인 후 복사

Base64 데이터 디코딩

인코딩된 문자열에서 원래 []바이트 값을 검색하려면 base64 데이터를 디코딩할 수 있습니다:

decodedBytes, err := base64.StdEncoding.DecodeString("AAAAAQID")
if err != nil {
    // Handle error
}

fmt.Println(decodedBytes) // Output: [0 0 0 1 2 3]
로그인 후 복사

위 내용은 Go의 `json.Marshal`이 `[]byte`를 Base64 문자열로 인코딩하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿