Go で文字列分割を使用したカスタム アンマーシャル
JSON を Go 構造体にアンマーシャリングするとき、デフォルトの動作では JSON 値を対応する構造体に変換します。フィールド。ただし、アンマーシャリング プロセス中にカスタム変換を実行する必要があるシナリオがあります。
コンマ区切りの文字列として表される「件名」を含む JSON オブジェクトを考えてみましょう。これを文字列のスライスとして「件名」を含む Go 構造体にアンマーシャリングするには、アンマーシャリング中に文字列を分割する必要があります。
1 つの方法は、JSON を使用して「件名」フィールドのカスタム アンマーシャラーを実装することです。アンマーシャラーインターフェイス。これを実現する方法は次のとおりです。
type SubjectSlice []string // UnmarshalJSON implements custom unmarshalling for SubjectSlice. func (s *SubjectSlice) UnmarshalJSON(data []byte) error { var subjects string err := json.Unmarshal(data, &subjects) if err != nil { return err } *s = strings.Split(subjects, "-") return nil }
構造体定義で、「subjects」フィールドにカスタム スライス タイプを使用します。
type Student struct { StudentNumber int Name string Subjects SubjectSlice }
このカスタムを使用して JSON をアンマーシャリングするときunmarshaller を使用すると、「件名」フィールドが文字列のスライスに自動的に分割されます。
たとえば、次の JSON を考えてみましょう:
{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}
カスタム アンマーシャラーを使用して Student 構造体にアンマーシャリングします。
s := Student{ StudentNumber: 1234567, Name: "John Doe", Subjects: []string{"Chemistry", "Maths", "History", "Geography"}, }
カスタム アンマーシャラーを実装すると、アンマーシャリング中に複雑なデータ変換を処理できるため、JSON でカスタム データ構造を操作するための強力なツールになります。
以上がカスタムアンマーシャリングを使用して、Go でカンマ区切りの文字列をスライスにアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。