Go에서는 []바이트 슬라이스가 저장됩니다. 원시 바이너리 데이터. json.Marshal()을 사용하여 []byte 필드가 포함된 구조체를 JSON으로 인코딩하려고 하면 결과 JSON에 원래 바이너리 데이터 대신 슬라이스 내용에 대한 예기치 않은 문자열 표현이 포함됩니다. 예:
<code class="go">type Msg struct { Content []byte } func main() { msg := Msg{[]byte("Hello")} json, _ := json.Marshal(msg) fmt.Println(string(json)) // Prints {"Content":"SGVsbG8="} }</code>
json.Marshal()은 JSON에 원시 바이트에 대한 기본 표현이 없기 때문에 []바이트 슬라이스를 base64 인코딩 문자열로 인코딩합니다. Base64 인코딩은 인쇄 가능한 ASCII 문자 시퀀스를 사용하여 이진 데이터를 나타냅니다.
JSON의 base64 인코딩 문자열에서 원본 이진 데이터를 검색하려면 base64.StdEncoding.DecodeString 함수를 사용하는 문자열:
<code class="go">import "encoding/base64" func main() { ... decodedBytes, _ := base64.StdEncoding.DecodeString(msg.Content) fmt.Println(string(decodedBytes)) // Prints "Hello" }</code>
위 내용은 Go JSON 인코딩에서 바이너리 데이터를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!