ホームページ  >  記事  >  バックエンド開発  >  Golang でアンマーシャリング中に JSON フィールドを文字列スライスに分割するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 03:20:30881ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。