Golang でアンマーシャリング中に JSON フィールドを文字列スライスに分割するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-27 03:20:30
オリジナル
891 人が閲覧しました

How to Split a JSON Field into a String Slice During Unmarshaling in Golang?

Golang での文字列分割によるカスタム アンマーシャリング

問題:

1 つの場合の JSON アンマーシャリングの処理フィールドは文字列操作を使用してスライスに分割する必要があります。具体的には、提供された JSON の「subjects」フィールドを「-」で分割して []string を作成する必要があります。

解決策:

これを実現するには、次のようにします。カスタム文字列スライス タイプを定義し、そのための json.Unmarshaler インターフェイスを実装します。方法は次のとおりです:

<code class="go">type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
    var s string
    if err := json.Unmarshal(data, &s); err != nil {
        return err
    }
    *ss = strings.Split(s, "-")
    return nil
}</code>
ログイン後にコピー

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

改訂された構造体:

これで、「subjects」フィールドにカスタム strslice タイプを使用するように Student 構造体を更新できます:

<code class="go">type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}</code>
ログイン後にコピー

Usage:

これらの変更により、提供された JSON をアンマーシャリングし、「件名」フィールドを自動的に分割できるようになりました:

<code class="go">func main() {
    var s Student
    err := json.Unmarshal([]byte(src), &s)
    fmt.Println(s, err)
}

const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`</code>
ログイン後にコピー

出力:

{1234567 John Doe [Chemistry Maths History Geography]} <nil>
ログイン後にコピー

これこのアプローチは、JSON データをアンマーシャリングしながらフィールド変換を処理するクリーンでカスタマイズ可能な方法を提供します。

以上がGolang でアンマーシャリング中に JSON フィールドを文字列スライスに分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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