ホームページ > バックエンド開発 > Golang > Go の「json.Marshal」が「[]byte」を Base64 文字列としてエンコードするのはなぜですか?

Go の「json.Marshal」が「[]byte」を Base64 文字列としてエンコードするのはなぜですか?

Patricia Arquette
リリース: 2024-12-10 01:23:10
オリジナル
325 人が閲覧しました

Why Does Go's `json.Marshal` Encode `[]byte` as a Base64 String?

[]byte を JSON にマーシャリングする

Go では、[]byte を JSON にマーシャリングする方法は、他のデータ型とは少し異なります。バイトを配列として直接エンコードする代わりに、JSON パッケージは []byte を Base64 でエンコードされた文字列としてエンコードします。この動作は、encoding/json のドキュメントに明示的に記載されています。

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.
ログイン後にコピー

Base64 エンコードされた文字列出力

あなたの場合、 json.Marshal(グループ)には「AAAAAQID」が含まれています。これは、[]byte スライスの Base64 エンコードを表します。

originalBytes := []byte{0, 0, 0, 1, 2, 3}
encodedString := base64.StdEncoding.EncodeToString(originalBytes)

fmt.Println(encodedString) // Output: AAAAAQID
ログイン後にコピー

Base64 データのデコード

エンコードされた文字列から元の []byte 値を取得するには、次のようにします。 Base64 データをデコードできます:

decodedBytes, err := base64.StdEncoding.DecodeString("AAAAAQID")
if err != nil {
    // Handle error
}

fmt.Println(decodedBytes) // Output: [0 0 0 1 2 3]
ログイン後にコピー

以上がGo の「json.Marshal」が「[]byte」を Base64 文字列としてエンコードするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート