「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Golang でアンマーシャリング中に JSON フィールドを文字列スライスに分割するにはどうすればよいですか?

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

2024 年 11 月 24 日に公開
ブラウズ:814

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

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

問題:

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

Solution:

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

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
}

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

改訂された構造体:

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

type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}

使用法:

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

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"}`

出力:

{1234567 John Doe [Chemistry Maths History Geography]} 

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3