Go JSON エンコーディングで []byte フィールドを文字列としてマーシャリングする方法は?
Nov 07, 2024 am 03:29 AMGo で JSON []byte を文字列としてマーシャリングする
[]byte フィールドを含む構造体を JSON にエンコードすると、予期しない文字列表現が発生する可能性があります。結果。このエンコードでは、ドキュメントに記載されているように、[]byte フィールドは Base64 でエンコードされた文字列としてマーシャリングされます。
「配列とスライスの値は、[]byte が Base64 としてエンコードされることを除き、JSON 配列としてエンコードされます。」エンコードされた文字列であり、nil スライスは null JSON オブジェクトとしてエンコードされます。
この動作を説明するには、次の Msg 構造体を考えてみましょう:
<code class="go">type Msg struct { Content []byte }</code>
次の例では、文字列 "Hello" " は [] バイト スライス helloSlc に変換され、obj Msg オブジェクトの Content フィールドに割り当てられます:
<code class="go">helloStr := "Hello" helloSlc := []byte(helloStr) obj := Msg{helloSlc}</code>
json.Marshal を使用して obj を JSON にエンコードすると、結果の JSON には Base64 でエンコードされた文字列が含まれます[]byte フィールドの表現:
<code class="go">json, _ := json.Marshal(obj) fmt.Println(string(json))</code>
出力:
{"Content":"SGVsbG8="}
JSON 出力で元の文字列値「Hello」を取得するには、[]byte フィールドを次のようにする必要があります。 JSON にエンコードする前に、base64 でエンコードされた表現から明示的にデコードされます。これは、エンコーディング/base64 パッケージを使用して実現できます:
<code class="go">import ( "encoding/base64" "encoding/json" "fmt" ) type Msg struct { Content string } func main() { helloSlc := []byte("Hello") obj := Msg{string(base64.StdEncoding.EncodeToString(helloSlc))} json, _ := json.Marshal(obj) fmt.Println(string(json)) }</code>
出力:
{"Content":"Hello"}
以上がGo JSON エンコーディングで []byte フィールドを文字列としてマーシャリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?
