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