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