> 백엔드 개발 > Golang > []바이트를 JSON으로 마샬링하면 Base64로 인코딩된 문자열이 생성되는 이유는 무엇입니까?

[]바이트를 JSON으로 마샬링하면 Base64로 인코딩된 문자열이 생성되는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-07 14:34:13
원래의
525명이 탐색했습니다.

Why Does Marshaling []byte to JSON Result in a Base64 Encoded String?

[]바이트를 JSON으로 마샬링: 문자열 표현 이해

[]바이트 값을 JSON 형식으로 마샬링하려고 할 때 특이한 문제가 발생할 수 있습니다. 원래 질문에서 강조 표시된 것과 같은 문자열이 출력됩니다. 이 문서에서는 수수께끼의 양면, 즉 []byte를 JSON으로 올바르게 마샬링하는 방법과 출력이 관찰된 문자열로 변환되는 이유를 다룹니다.

해결책: []byte를 JSON으로 마샬링

json.Marshal에 대한 공식 Golang 문서에 따르면 배열 및 슬라이스 값은 JSON 배열로 인코딩됩니다. 이 규칙의 예외는 특히 base64로 인코딩된 문자열로 인코딩된 []바이트 슬라이스에 적용됩니다. 반대로, nil 슬라이스는 null JSON 객체로 인코딩됩니다.

따라서 []byte를 JSON으로 정확하게 마샬링하려면 마샬링 프로세스 중에 명시적으로 base64 인코딩 문자열로 캐스팅되어야 합니다.

이유: []byte에 대한 Base64 인코딩

원래 질문의 출력은 JSON의 []바이트 슬라이스에 사용된 인코딩 메커니즘의 직접적인 결과입니다. JSON은 원시 바이트 슬라이스를 기본적으로 나타낼 수 없습니다. 따라서 base64로 인코딩된 문자열로 변환됩니다. Base64 인코딩을 사용하면 바이너리 데이터를 문자열로 표현할 수 있으므로 JSON과 같은 텍스트 기반 형식으로 전송 및 저장하는 데 적합합니다.

예를 들어 출력에 표시된 문자열 "AAAAAQID"는 base64- []바이트 슬라이스 [0, 0, 0, 1, 2, 3]의 인코딩된 버전.

base64에서 원본 바이트 슬라이스를 검색하려면 표현을 사용하려면 아래 코드에 설명된 대로 base64.StdEncoding.DecodeString 함수를 사용할 수 있습니다.

import "encoding/base64"

func decodeBase64(encodedString string) ([]byte, error) {
    return base64.StdEncoding.DecodeString(encodedString)
}
로그인 후 복사

결론

[]바이트를 JSON으로 마샬링하는 데는 명시적인 작업이 필요합니다. 이를 base64 문자열로 인코딩합니다. 이는 텍스트 기반 형식 내에서 이진 데이터를 표현해야 하는 필요성에 따라 구동되는 기술입니다. 이 인코딩 메커니즘을 이해하면 마샬링 프로세스 중에 발생하는 이상해 보이는 문자열 출력을 이해하는 데 도움이 됩니다.

위 내용은 []바이트를 JSON으로 마샬링하면 Base64로 인코딩된 문자열이 생성되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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