golang json コメントを挿入

WBOY
リリース: 2023-05-15 10:27:37
オリジナル
596 人が閲覧しました

Golang を使用して開発する場合、非常に一般的な要件は、保存または送信のためにデータを JSON 形式に変換することです。 JSON は軽量で読み書きが容易なデータ形式であり、Web アプリケーションやモバイル アプリケーションで広く使用されています。ただし、場合によっては、JSON データの可読性を高めたり、特定のフィールドの意味を説明したりするために、JSON データに注釈を追加する必要がある場合があります。また、JSON 標準自体は注釈をサポートしていません。この記事では、Golang で JSON コメントを挿入するいくつかの方法を紹介します。

方法 1: 構造タグを使用する

Golang では、通常、構造タグ (タグ) を使用して、JSON 内のフィールドのマッピング関係を定義します。たとえば、json:"username" を使用して、構造体フィールド Name を JSON の username フィールドにマッピングできます。実際、構造タグ内でコメントを使用することができます。コメントの前に json:"-" を追加するだけです。

type User struct {
    Name     string `json:"username"`  // 用户名
    Password string `json:"password"`  // 密码
}
ログイン後にコピー

上の例では、// を使用してコメントを追加し、各フィールドの意味を説明します。 User 構造を JSON に変換する場合、コメントは出力に影響しません。ただし、JSON を構造にデコードする場合、コメントは無視されるため、コードの厳密さには適していません。

方法 2: コメント文字列を使用する

もう 1 つの方法は、JSON にコメント文字列を追加することです。このコメント文字列は通常、JSON フィールドの値の前に配置されます。たとえば、次の JSON データにコメントを追加できます。

{
    "user": {
        "name": "alice", // 用户名
        "password": "123456" // 密码
    }
}
ログイン後にコピー

Golang では、json.RawMessage 型を使用して JSON の文字列値を表すことができます。この型はエスケープされていない JSON 文字列を保存でき、デコード時に何も行いません。コメント文字列を json.RawMessage に保存して、JSON に追加できます。

これは例です:

type User struct {
    Name     string `json:"-"`        // 不输出
    Password string `json:"-"`        // 不输出
    Comment  string `json:"comment"` // 注释
}

u := User{
    Name:     "alice",
    Password: "123456",
    Comment:  `{ "//username": "用户名", "//password": "密码" }`,
}

data, err := json.Marshal(u)
if err != nil {
    log.Fatal(err)
}

fmt.Println(string(data))
ログイン後にコピー

上の例では、ユーザーのユーザー名とパスワードのフィールドを - としてマークし、それらが JSON に出力されないことを示します。コメント文字列は、Comment フィールドに保存されます。構造体 u を JSON 形式に変換する場合、json.Marshal 関数を使用して JSON 文字列に変換します。最後に、JSON 文字列をコンソールに出力すると、JSON データ内のコメントが有効になっていることがわかります。

JSON データをデコードするときは、Comment フィールドのコメント文字列を手動で解析し、その内容に基づいて JSON データを解釈する必要があることに注意してください。これによりコードは複雑になりますが、現在実現可能な解決策の 1 つでもあります。

方法 3: サードパーティ ライブラリを使用する

最後に、既製のサードパーティ ライブラリを使用して JSON コメントを挿入できます。現在、json-iterator/goeasyjson など、コメントの追加をサポートする Golang JSON ライブラリがいくつかあります。これらのライブラリは、JSON 形式に影響を与えることなくコメントの追加をサポートしており、非常に簡単にコメントを追加できます。使うと便利です。

次は、json-iterator/go ライブラリを使用してアノテーションを追加する例です:

import "github.com/json-iterator/go"

type User struct {
    Name     string `json:"username"`  // 用户名
    Password string `json:"password"`  // 密码
}

u := User{
    Name:     "alice",
    Password: "123456",
}

json := jsoniter.ConfigCompatibleWithStandardLibrary

data, err := json.Marshal(u)
if err != nil {
    log.Fatal(err)
}

fmt.Println(json.Get(data, "username").Last().GetInterface())
ログイン後にコピー

上の例では、jsoniter.ConfigCompatibilityWithStandardLibrary# を使用します。 ## JSON オブジェクトを作成し、Marshal 関数を使用して構造体 u を JSON 文字列に変換します。最後に、json.Get 関数を使用して JSON から指定されたフィールドを取得し、GetInterface 関数を使用してそれを Golang オブジェクトに変換します。ここでは、ユーザー名フィールドに対応するコメント文字列をコンソールに出力しています。コメントが正常に追加されており、コードは比較的単純であることがわかります。

要約すると、上記は Golang に JSON コメントを挿入する 3 つの方法です。各方法には長所と短所があり、コードの可読性を高めるには、特定のニーズに応じて最適な方法を選択する必要があります。

以上がgolang json コメントを挿入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!