カスタムアンマーシャリングを使用して、Go でカンマ区切りの文字列をスライスにアンマーシャリングする方法

DDD
リリース: 2024-10-26 16:21:30
オリジナル
580 人が閲覧しました

How to Unmarshal a Comma-Separated String into a Slice in Go Using Custom Unmarshaling?

Go で文字列分割を使用したカスタム アンマーシャル

JSON を Go 構造体にアンマーシャリングするとき、デフォルトの動作では JSON 値を対応する構造体に変換します。フィールド。ただし、アンマーシャリング プロセス中にカスタム変換を実行する必要があるシナリオがあります。

コンマ区切りの文字列として表される「件名」を含む JSON オブジェクトを考えてみましょう。これを文字列のスライスとして「件名」を含む Go 構造体にアンマーシャリングするには、アンマーシャリング中に文字列を分割する必要があります。

1 つの方法は、JSON を使用して「件名」フィールドのカスタム アンマーシャラーを実装することです。アンマーシャラーインターフェイス。これを実現する方法は次のとおりです。

type SubjectSlice []string

// UnmarshalJSON implements custom unmarshalling for SubjectSlice.
func (s *SubjectSlice) UnmarshalJSON(data []byte) error {
    var subjects string
    err := json.Unmarshal(data, &subjects)
    if err != nil {
        return err
    }
    *s = strings.Split(subjects, "-")
    return nil
}
ログイン後にコピー

構造体定義で、「subjects」フィールドにカスタム スライス タイプを使用します。

type Student struct {
    StudentNumber int
    Name          string
    Subjects      SubjectSlice
}
ログイン後にコピー

このカスタムを使用して JSON をアンマーシャリングするときunmarshaller を使用すると、「件名」フィールドが文字列のスライスに自動的に分割されます。

たとえば、次の JSON を考えてみましょう:

{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}
ログイン後にコピー

カスタム アンマーシャラーを使用して Student 構造体にアンマーシャリングします。

s := Student{
    StudentNumber: 1234567,
    Name: "John Doe",
    Subjects: []string{"Chemistry", "Maths", "History", "Geography"},
}
ログイン後にコピー

カスタム アンマーシャラーを実装すると、アンマーシャリング中に複雑なデータ変換を処理できるため、JSON でカスタム データ構造を操作するための強力なツールになります。

以上がカスタムアンマーシャリングを使用して、Go でカンマ区切りの文字列をスライスにアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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