Go で []byte を文字列としてデコードする
Go では、[]byte スライスを JSON 文字列としてマーシャリングするときに変換が実行されましたjson.Marshal() メソッドにより、バイト スライスが Base64 でエンコードされた文字列としてエンコードされます。ドキュメントにあるように:
Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.
この変換は、JSON 内の生のバイトのネイティブ表現の欠如を補うために実行されます。 Base64 エンコーディングにより、バイト スライスが有効な JSON 文字列として転送されることが保証されます。
エンコーディングの克服
[] の元のコンテンツを含む JSON 文字列を生成するにはbyte フィールドの場合、マーシャリングの前にデータを文字列に変換する必要があります。これは、string() 関数を使用して実現できます。
<code class="go"> helloStr := "Hello" helloSlc := []byte(helloStr) obj := Msg{string(helloSlc)} json, _ := json.Marshal(obj) fmt.Println(string(json))</code>
これにより、目的の出力が生成されます。
{"Content":"Hello"}
このアプローチにより、JSON 文字列に文字列の元のコンテンツが含まれることが保証されます。 、base64 でエンコードされた表現ではなく。
以上がGo JSON で []byte を文字列としてデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。