Go で文字列分割を使用したカスタム アンマーシャル
JSON データを扱う場合、特定のデータに合わせてアンマーシャリング プロセスを変換またはカスタマイズする必要がよくあります。データ型。この場合、アンマーシャリング中にカンマ区切りの値を含む JSON 文字列を []string スライスに分割したいと考えています。
これを実現するには、[]string 型のカスタム アンマーシャラーを実装しましょう。
<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>
このカスタム アンマーシャラーは、生の JSON データを入力として受け取り、指定された区切り文字 (この場合は「-」) で分割して文字列のスライスに変換します。
元の構造体これで、Subjects フィールドにこのカスタム タイプを使用できるようになります:
<code class="go">type Student struct { StudentNumber int `json:"student_number"` Name string `json:"name"` Subjects strslice `json:"subjects"` }</code>
これにより、JSON データを直接構造体にアンマーシャリングでき、Subjects フィールドは自動的に個別の文字列に分割されます:
<code class="go">json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}` var s Student if err := json.Unmarshal([]byte(json), &s); err != nil { panic(err) } fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}</code>
以上がGo で文字列分割を使用して JSON アンマーシャリングをカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。