目次
質問内容
$$c を使用して実行時に構造体型を作成することはできます$$reflect.StructOf()
ホームページ バックエンド開発 Golang golangの構造体からjsonオブジェクトを手動で作成する

golangの構造体からjsonオブジェクトを手動で作成する

Feb 12, 2024 am 11:03 AM
overflow

golangの構造体からjsonオブジェクトを手動で作成する

golang では、構造体から json オブジェクトを手動で作成するのが一般的な操作です。 structをjson形式に変換することで、ネットワーク送信や保存などに簡単に利用することができます。この記事では、PHP エディター Banana が、golang の組み込みパッケージを使用してこの機能を実現する方法を紹介します。それだけでなく、構造体のネストされたフィールドを処理する方法と、特殊なタイプのフィールドを処理する方法についても説明します。初心者でも経験豊富な開発者でも、この記事では golang で json オブジェクトを簡単に作成するための詳細なガイダンスを提供します。はじめましょう!

質問内容

言いたい構成があります

リーリー

このようなものを使用して簡単に json に変換できることがわかりました

リーリー

空の json 文字列が返されます。

ただし、json 内に存在するすべてのフィールドと「null 値」を含む構造の json 表現を返すには、同じ構造を使用する必要があります。 (実際には、非常に大規模な構造なので、タグなしでコピーを保持することはできません)

最も簡単な方法は何ですか?

基本的に、jsonomitemptyタグを無視する構造のjsonマーシャルを作成する必要があります。

この JSON の作成は、効率的またはパフォーマンス的である必要はありません。

この種のタスクにはライブラリを使用したいと思いますが、私が見たほとんどのライブラリは、何らかの特別な形式を作成するか、またはomitemptyを尊重します。 ###編集:###

https://stackoverflow.com/a/77799949/2187510 を回答として選択し、デフォルト値を許可するために追加の作業を行います (そのコードを参照として使用します)

リーリー

出力:

<code>type Foo struct {
  A string `json:",omitemtpy"
}
</code>
ログイン後にコピー

回避策

実行時にタグを変更することはできませんが、

$$c を使用して実行時に構造体型を作成することはできます$$reflect.StructOf()

したがって、構造体の型をコピーし、複製内の JSON タグから ,omitempty

オプションを除外するというアイデアです。

以下のすべての例は、Go Playground

で見つけることができます。

これは人々が最初に考えるよりも簡単です。これを再帰的に行う必要があるだけであり (ある構造体フィールドが別の構造体である可能性があります)、必ずポインターを処理する必要があります。 リーリー このタイプでテストしてみましょう:

リーリー

まず、型の重複を除いた JSON 出力を次に示します。

リーリー

出力:

リーリー

Bar

フィールドと

Baz

フィールドは構造体であるため、これらのフィールドが取得されることに注意してください。 copy と入力してみましょう: リーリー これは出力します:

リーリー ###良い!まさに私たちが望んでいたものです!

しかし、まだ終わっていません。構造体ポインターフィールドを持つ型がある場合はどうなるでしょうか?このような:### リーリー

繰り返し型の値を JSON マーシャリングしようとします:

リーリー

出力:

リーリー

構造体にポインターが含まれている場合、これらのポインターは JSON 出力に

null

として表示されますが、そのフィールドも出力に表示したいと考えています。これには、出力を生成するために、非

nil

値に初期化する必要があります。

幸いなことに、これを行うためにリフレクションを使用することもできます。 リーリー ###私たちは興奮しています!実際に動作を見てみましょう: リーリー 出力: リーリー ###良い!すべてのフィールドが含まれています。

以上がgolangの構造体からjsonオブジェクトを手動で作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

2009 年から 2025 年の誕生以来のビットコインの価格 BTC 過去の価格の最も完全な概要 2009 年から 2025 年の誕生以来のビットコインの価格 BTC 過去の価格の最も完全な概要 Jan 15, 2025 pm 08:11 PM

2009 年の誕生以来、ビットコインは暗号通貨の世界のリーダーとなり、その価格は大きな変動を経験しました。包括的な歴史的概要を提供するために、この記事では 2009 年から 2025 年までのビットコイン価格データをまとめ、主要な市場イベント、市場センチメントの変化、価格変動に影響を与える重要な要因を取り上げます。

Windows 11 の右下隅で時間がなくなった場合の対処方法_Windows 11 の右下隅で時間がなくなった場合の対処方法 Windows 11 の右下隅で時間がなくなった場合の対処方法_Windows 11 の右下隅で時間がなくなった場合の対処方法 May 06, 2024 pm 01:20 PM

1. まず、Windows 11の下部にあるタスクバーの空白部分を右クリックし、[タスクバーの設定]を選択します。 2. タスクバー設定の右側にある [taskbarcorneroverflow] を見つけます。 3. 次に、その上にある [時計] または [時計] を見つけて選択し、オンにします。方法 2: 1. キーボード ショートカット [win+r] を押して [ファイル名を指定して実行] を呼び出し、[regedit] と入力して Enter キーを押して確定します。 2. レジストリエディタを開き、その中にある[HKEY_CURRENT_USERControlPanel]を見つけて削除します。 3. 削除後、コンピュータを再起動すると、システムに戻ると、設定を求めるプロンプトが表示されます。

Java 関数について質問したり議論したりできるコミュニティ フォーラムやディスカッション グループはありますか? Java 関数について質問したり議論したりできるコミュニティ フォーラムやディスカッション グループはありますか? Apr 28, 2024 pm 02:12 PM

回答: Java 関数型プログラミングの質問には、次のコミュニティ フォーラムおよびディスカッション グループが利用できます。 StackOverflow: Java 関数型プログラミングの専門家のコミュニティを備えた世界最大のプログラミング Q&A Web サイト。 JavaFunctionalProgramming: Java 関数型プログラミングに焦点を当てたコミュニティ フォーラムで、概念、言語機能、ベスト プラクティスについてのディスカッションを提供します。 Redditr/functionjava: Java の関数型プログラミングに焦点を当てたサブレディットで、ツール、ライブラリ、テクノロジに焦点を当てています。 Discord: JavaFunctional Programming: リアルタイムのディスカッション、コード共有、コラボレーションを提供する Discord サービス

Pythonで他の人のコードを使用する方法 Pythonで他の人のコードを使用する方法 May 05, 2024 pm 07:54 PM

他の人の Python コードを使用するにはどうすればよいですか?コード リポジトリを見つける: PyPI や GitHub などのプラットフォームで必要なコードを見つけます。インストール コード: pip を使用するか、GitHub リポジトリのクローンを作成してインストールします。モジュールのインポート: スクリプト内で import ステートメントを使用して、インストールされているモジュールをインポートします。コードの操作: モジュール内の関数とクラスにアクセスします。 (オプション) コードを調整する: プロジェクトに合わせて必要に応じてコードを変更します。

win11 コンピューターの時刻が常に間違っている場合はどうすればよいですか? Windows 11コンピュータで間違った時刻を調整する方法 win11 コンピューターの時刻が常に間違っている場合はどうすればよいですか? Windows 11コンピュータで間違った時刻を調整する方法 May 03, 2024 pm 09:20 PM

win11 コンピューターの時刻が常に間違っている場合はどうすればよいですか? win11 システムを使用するとき、誰もが時刻やカレンダーを設定しますが、多くのユーザーはコンピューターの時刻が常に間違っていると尋ねます。何が起こっているのでしょうか?ユーザーは下のタスクバーを直接クリックし、taskbarcorneroverflow を見つけてセットアップできます。このサイトでは、Win11 コンピューターの時刻誤差を調整する方法を詳しく紹介します。 Windows 11 でコンピューターの時刻エラーを調整する方法。方法 1: 1. まず、下のタスクバーの空白スペースを右クリックし、[タスクバーの設定] を選択します。方法 2: 1. キーボード ショートカット win+r を押して「ファイル名を指定して実行」を呼び出し、「regedit」と入力して Enter キーを押して確認します。

Java関数開発における一般的な例外の種類とその修復方法 Java関数開発における一般的な例外の種類とその修復方法 May 03, 2024 pm 02:09 PM

Java 関数開発における一般的な例外の種類とその修復方法 Java 関数の開発中に、関数の正しい実行に影響を与えるさまざまな例外が発生する可能性があります。一般的な例外の種類とその修復方法は次のとおりです。 1. NullPointerException 説明: 初期化されていないオブジェクトにアクセスするとスローされます。修正: オブジェクトを使用する前に、オブジェクトが null でないことを確認してください。サンプル コード: try{Stringname=null;System.out.println(name.length());}catch(NullPointerExceptione){

CSSでのオーバーフローとはどういう意味ですか CSSでのオーバーフローとはどういう意味ですか Apr 28, 2024 pm 03:15 PM

オーバーフローは、要素コンテンツがコンテナを超えた場合の表示モードを制御するために使用される CSS のプロパティです。 使用可能な値には、次のものが含まれます。オーバーフローコンテンツを表示するためにスクロールバーが表示されます auto: スクロールバーを表示するかどうかはブラウザが自動的に決定します accept: 親要素のオーバーフロー属性を継承します

Douyin のランダムなアカウントを管理する人はいませんか?二度目の異議申し立てはできますか? Douyin のランダムなアカウントを管理する人はいませんか?二度目の異議申し立てはできますか? May 03, 2024 am 09:37 AM

世界的に有名なショートビデオプラットフォームとして、Douyin には巨大なユーザーベースとコンテンツクリエイターがいます。ただし、プラットフォームのルールは常に更新および改善されているため、一部のユーザーはアカウント禁止に遭遇する可能性があります。これにより、プラットフォーム管理の透明性と公平性について世間の疑問が生じています。この記事では、Douyin アカウントの禁止の問題と、アカウントが禁止された後にユーザーに異議を申し立てる方法があるかどうかについて説明します。 Douyin プラットフォームで禁止される理由は数多くあります。これには、違法なコンテンツ、プラットフォーム規制の違反、他人の権利の侵害などが含まれますが、これらに限定されません。プラットフォームの秩序とユーザーの利益を維持するために、Douyin は一連のルールとレビューメカニズムを確立しました。一部のユーザーがルールに違反した場合、そのアカウントは禁止される場合があります。ただし、一部のユーザーは禁止の理由に疑問を抱いたり、不満を抱いたりする可能性があります。

See all articles