検索
ホームページバックエンド開発GolangGo で混合型の JSON 配列をシリアル化する方法は?

How to Serialize a Mixed-Type JSON Array in Go?

Go で混合型 JSON 配列をシリアル化する

Go で、文字列、浮動小数点数、Unicode 文字の異種配列をシリアル化して、 JSON 配列は、混合型配列のサポートが組み込まれていないため、難しく見えるかもしれません。ただし、json.Marshaler インターフェイスを実装することで、これを実現するためにオブジェクトがシリアル化される方法をカスタマイズできます。

MarshalJSON メソッドの実装

Row のような構造を次のようにシリアル化するには配列の配列の場合、Row 型で MarshalJSON メソッドを作成します。このメソッドは、Row 構造体を汎用インターフェイス値の配列に変換し、json.Marshal を使用してシリアル化します。

func (r *Row) MarshalJSON() ([]byte, error) {
    arr := []interface{}{r.Ooid, r.Score, r.Text}
    return json.Marshal(arr)
}

使用例

の MarshalJSON メソッドを使用します。 Row 要素のスライスを有効な JSON にシリアル化できます。 array:

rows := []Row{{"ooid1", 2.0, "Söme text"}, {"ooid2", 1.3, "Åther text"}}
marshalled, _ := json.Marshal(rows)

// Output:
// {"results": [["ooid1", 2.0, "Söme text"], ["ooid2", 1.3, "Åther text"]]}

JSON からのアンマーシャリング

必要に応じて、JSON データを Row 構造体に逆シリアル化する json.Unmarshaler インターフェイスを実装することもできます。これには、インターフェイス値の中間スライスを使用して、JSON 配列から抽出された値を保存するという同様のアプローチが含まれます。

func (r *Row) UnmarshalJSON(bs []byte) error {
    arr := []interface{}{}
    json.Unmarshal(bs, &arr)
    // TODO: add error handling here.
    r.Ooid = arr[0].(string)
    r.Score = arr[1].(float64)
    r.Text = arr[2].(string)
    return nil
}

json.Marshaler インターフェイスと json.Unmarshaler インターフェイスを実装することで、効果的にシリアル化および逆シリアル化できます。 Go の混合型配列により、異種要素を含むデータ構造を JSON として操作できるようになります。

以上がGo で混合型の JSON 配列をシリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PythonスクリプトによるDebianでタスクをスケジュールする方法PythonスクリプトによるDebianでタスクをスケジュールする方法May 16, 2025 pm 01:09 PM

Debianシステムでは、Cronを使用して時限タスクを手配し、Pythonスクリプトの自動実行を実現できます。まず、端子を開始します。次のコマンドを入力して、現在のユーザーのCrontabファイルを編集します。Crontab-Eルートアクセス許可を持つ他のユーザーのCrontabファイルを編集する必要がある場合は、編集するユーザー名にユーザー名を置き換えるために、sudocrontab-uusername-eを使用してください。 crontabファイルでは、次のように形式のタイミングされたタスクを追加できます:*****/path/to/your/python-script.pyこれら5つのアスタリスクは議事録(0-59)以降を表します

DebianでGolangネットワークパラメーターを構成する方法DebianでGolangネットワークパラメーターを構成する方法May 16, 2025 pm 01:06 PM

DebianシステムでGolangのネットワークパラメーターを調整することは、さまざまな方法で実現できます。以下はいくつかの実行可能な方法です。方法1:環境変数を設定することにより、環境変数を一時的に設定します。端末に次のコマンドを入力して、環境変数を一時的に設定します。この設定は、現在のセッションでのみ有効です。 ExportGodeBug = "GCTRACE = 1NETDNS = GO" GCTRACE = 1はガベージコレクション追跡をアクティブにし、NetDNS = GOはシステムのデフォルトではなく独自のDNSリゾルバーを使用します。環境変数を永続的に設定します:〜/.bashrcや〜/.profileなどのシェル構成ファイルに上記のコマンドを追加します

DebianのLibofficeのショートカットキーは何ですかDebianのLibofficeのショートカットキーは何ですかMay 16, 2025 pm 01:03 PM

DebianシステムでLibofficeをカスタマイズするためのショートカットキーは、システム設定を通じて調整できます。 Libofficeショートカットキーを設定するための一般的に使用される手順と方法を次に示します。Libofficeショートカットキーを設定するための基本的な手順オープンシステム設定:Debianシステムで、左上隅のメニュー(通常ギアアイコン)をクリックし、「システム設定」を選択します。 [デバイス]を選択します。[システム設定]ウィンドウで、[デバイス]を選択します。キーボードを選択します。デバイス設定ページで、キーボードを選択します。対応するツールへのコマンドを見つけます。キーボード設定ページで、下にスクロールして「ショートカットキー」オプションを表示します。クリックすると、ポップアップにウィンドウが表示されます。ポップアップウィンドウで対応するLibofficeワーカーを見つけます

Kubernetesを展開するDebianの予防策は何ですかKubernetesを展開するDebianの予防策は何ですかMay 16, 2025 pm 01:00 PM

DebianシステムにKubernetes(K8S)クラスターを展開する場合、クラスターの安定性とセキュリティを確保するために、複数のキーポイントを注意する必要があります。いくつかの主要なメモを次に示します。スワップパーティションの無効化:Kubernetes 1.8から始めて、スワップパーティションを無効にする必要があります。スワップは、次のコマンドを使用して一時的に無効にすることができます。sudoswapoff-aは、スワップを永続的に無効にし、 /etc /fstabファイルを編集し、「スワップ」を含む行をコメントします。セットカーネルパラメーター:IPv4転送を有効にする:sudotee/etc/sysctl.d/k8s.conf net.bridge.bridなどのネットワークパラメーターを設定する

DebianでのKubernetesの展開の利点は何ですかDebianでのKubernetesの展開の利点は何ですかMay 16, 2025 pm 12:57 PM

Kubernetes(略してK8S)には、Debianに展開するための次の利点があります。安定性:Debianは、Kubernetesの動作環境に適した安定した信頼性の高いオペレーティングシステムです。多くのチュートリアルでは、Debian12をKubernetesの展開の基礎となるオペレーティングシステムとして使用することを推奨しています。これは、DebianがオペレーティングシステムのKubernetesの基本要件を満たすことができる信頼できるオペレーティング環境を提供することを示しています。セキュリティ:Debianは、SelinuxやApparmorなどの強力なセキュリティ機能を提供し、Kubernetesクラスターのセキュリティをさらに強化できます。合理的な構成と最適化措置により、Kuberneを確保できます

DebianにKubernetesクラスターを展開する方法DebianにKubernetesクラスターを展開する方法May 16, 2025 pm 12:54 PM

DebianシステムにKubernetesクラスターを展開することは、さまざまな方法で実現できます。 KubeAdMツールを使用して、Debian12にKubernetesクラスターを設定するための詳細な手順を次に示します。Debianシステムが最新バージョンに更新されていることを確認する準備をします。管理者の特権を持つSudoユーザーがいることを確認してください。すべてのノードが安定したネットワークを介して互いに接続できることを確認してください。インストール手順:ホスト名を設定してホストファイルを更新します。各ノードで、HOSTNAMECTLコマンドを使用してホスト名を設定し、 /etc /ホストファイルにノードIPとホスト名の間に対応する関係を追加します。すべてのノードのスワップパーティションを無効にする:kubeletを作るために

DebianにGolang環境を構築する方法DebianにGolang環境を構築する方法May 16, 2025 pm 12:51 PM

DebianシステムにGolang環境を構築するには、次の手順に従うことができます。1。システムパッケージリストを最初に更新するには、システムパッケージリストが最新のものであることを確認してください:sudoaptupdate2。 Golangdebianをインストールするための公式リポジトリは、Golangインストールパッケージを提供します。次のコマンドを使用して、sudoaptinstallgolang-go3をインストールできます。インストールが完了した後、Golangが次のコマンドを介して正常にインストールされていることを確認できます。インストールが成功した場合、次のような出力が表示されます:covernversiongo1.20.3linux/AMD644。環境の変更を設定します

DebianのJavaScript開発のベストプラクティスは何ですかDebianのJavaScript開発のベストプラクティスは何ですかMay 16, 2025 pm 12:48 PM

Debian SystemsでJavaScriptを開発する場合、次のベストプラクティスを使用して開発プロセスを最適化できます。適切なログライブラリを選択することは、Node.jsアプリケーションに重要です。強力なログライブラリを選択します。 Winston、Pino、Bunyanなどの一般的に使用されるログライブラリは、ログレベルの設定、フォーマット、ストレージなどの豊富な機能を提供します。正しいログレベルを使用すると、ログレベルを正しく使用します(致命的、エラー、ワーン、情報、デバッグなど)重要なイベントと一般的な情報イベントを区別し、その後のトラブルシューティングとパフォーマンスの最適化を支援します。ログ分析ツールgoaccess:ネットワークログ分析のために、goaccessは

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール