ホームページ > バックエンド開発 > Golang > Goでマーシャリングされたsql.NullStringの出力をフラット化する方法?

Goでマーシャリングされたsql.NullStringの出力をフラット化する方法?

Barbara Streisand
リリース: 2024-11-28 07:58:14
オリジナル
365 人が閲覧しました

How to Flatten the Output of a Marshalled sql.NullString in Go?

Go でマーシャリングされた sql.NullString から値のみをフラット化して出力する方法

sql.NullString フィールドを持つ Golang 構造体を指定すると、デフォルトのマーシャリング動作は次のようになります。フィールドが文字列キーと有効なキーを持つ JSON オブジェクト内にネストされている出力。 NullString の値のみを含むフラット化された出力を実現するには、次の手順に従います。

1.カスタム タイプの定義:

sql.NullString を埋め込み、json.Marshaler インターフェイスを実装するカスタム タイプを作成します。

type MyNullString struct {
    sql.NullString
}
ログイン後にコピー

2. MarshalJSON メソッドを実装します。

MyNullString 内に、カスタム JSON マーシャリング動作を提供する MarshalJSON メソッドを実装します。

func (s MyNullString) MarshalJSON() ([]byte, error) {
    if s.Valid {
        return json.Marshal(s.String)
    }
    return []byte(`null`), nil
}
ログイン後にコピー

3.構造体を変更します:

フラット化が必要な構造体のフィールドにカスタム MyNullString 型を使用します。

type Company struct {
    ID   int          `json:"id"`              
    Abn  MyNullString `json:"abn,string"`
}
ログイン後にコピー

例:

package main

import (
    "database/sql"
    "encoding/json"
    "log"
)

type MyNullString struct {
    sql.NullString
}

func (s MyNullString) MarshalJSON() ([]byte, error) {
    if s.Valid {
        return json.Marshal(s.String)
    }
    return []byte(`null`), nil
}

type Company struct {
    ID   int          `json:"id"`              
    Abn  MyNullString `json:"abn,string"`
}

func main() {
    company := Company{
        ID:   68,
        Abn:  MyNullString{String: "SomeABN", Valid: true},
    }

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

    // Output: {"id":68,"abn":"SomeABN"}
    log.Println(string(result))
}
ログイン後にコピー

これらの手順に従うことで、出力を効果的に平坦化できます。 sql.NullString フィールドを検索し、マーシャリングされた JSON 内の値のみを取得します。

以上がGoでマーシャリングされたsql.NullStringの出力をフラット化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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