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

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

Linda Hamilton
Linda Hamilton원래의
2024-10-30 21:50:02361검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.