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