JSON アンマーシャリングのために UTF-8 文字列を [] バイトに変換する
Go で JSON 文字列をアンマーシャリングするには、[ ]バイトスライスを入力として使用します。 UTF-8 文字列しかない場合、それを []byte に変換するにはどうすればよいですか?
単純な変換と文字列を []byte にコピー
Go タイプシステムでは、
s := "some text" b := []byte(s) // b is type []byte
を使用して文字列から []byte に直接変換できます。ただし、この操作では文字列のコピーが作成されるため、大きな文字列の場合は非効率的になる可能性があります。
io.Reader を使用した効率的な変換
別の解決策として、strings.NewReader():
s := `{"somekey":"somevalue"}` r := strings.NewReader(s)
を使用して io.Reader を作成し、この 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)
Direct io.Reader Input
If the JSON string入力は io.Reader (ファイルまたはネットワーク接続など) として利用でき、json.NewDecoder():
var result interface{} err := json.NewDecoder(myReader).Decode(&result)
に直接渡すことができます。これにより、中間の変換やコピーの必要がなくなります。
以上がGo で JSON アンマーシャリングのために UTF-8 文字列を []byte に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。