Go에서 JSON 언마샬링을 위해 UTF-8 문자열을 []byte로 효율적으로 변환하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-30 21:50:02
원래의
423명이 탐색했습니다.

How to Efficiently Convert a UTF-8 String to []byte for JSON Unmarshalling in Go?

JSON 언마샬링을 위해 UTF-8 문자열을 []바이트로 변환

Go에서 JSON 문자열을 언마샬링하려면 [ ]바이트 슬라이스를 입력으로 사용합니다. UTF-8 문자열만 있는 경우 어떻게 []바이트로 변환할 수 있나요?

간단한 변환 및 문자열을 []바이트로 복사

Go 유형 시스템을 사용하면 다음을 사용하여 문자열을 []바이트로 직접 변환할 수 있습니다.

s := "some text"
b := []byte(s) // b is type []byte
로그인 후 복사

그러나 이 작업은 문자열의 복사본을 생성하므로 큰 문자열의 경우 비효율적일 수 있습니다.

io.Reader를 사용한 효율적인 변환

대체 솔루션은 strings.NewReader()를 사용하여 io.Reader를 만드는 것입니다.

s := `{"somekey":"somevalue"}`
r := strings.NewReader(s)
로그인 후 복사

그런 다음 이 io.Reader를 전달할 수 있습니다. 문자열 복사본을 만들지 않고 역정렬화하려면 json.NewDecoder()를 사용하세요.

var result interface{}
err := json.NewDecoder(r).Decode(&result)
로그인 후 복사

오버헤드 고려 사항

strings.NewReader() 및 json.NewDecoder()를 사용하면 약간의 오버헤드가 있으므로 작은 JSON 문자열의 경우 []byte로 직접 변환하는 것이 더 효율적일 수 있습니다.

s := `{"somekey":"somevalue"}`
var result interface{}
err := json.Unmarshal([]byte(s), &result)
로그인 후 복사

직접 io.Reader 입력

JSON 문자열이 입력은 io.Reader(예: 파일 또는 네트워크 연결)로 사용할 수 있으며 json.NewDecoder()로 직접 전달할 수 있습니다.

var result interface{}
err := json.NewDecoder(myReader).Decode(&result)
로그인 후 복사

이렇게 하면 중간 변환이나 복사가 필요하지 않습니다.

위 내용은 Go에서 JSON 언마샬링을 위해 UTF-8 문자열을 []byte로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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